powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Избавиться от NULL
13 сообщений из 13, страница 1 из 1
Избавиться от NULL
    #38694052
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, может подскажет кто...
База на MS SQL, делаю выборку через SQLEXEC(). В возвращаемом курсоре попадают поля со значением NULL. Есть ли возможность избавиться от них одним махом?

Я вот такой костыль придумал:

***************************************************************************
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
PROCEDURE NETNULLAM
    PARAMETERS PRIEMBAZA
    SELESELE=SELE()
    SELECT (PRIEMBAZA)
    FCOUFCOU=FCOUNT()
    FOR I=1 TO FCOUFCOU
        NAMEPOLE=FIELD(I)
        TYPEPOLE=TYPE(FIELD(I))
        DO CASE
            CASE TYPEPOLE=[C]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=[] WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[D]
                UPDATE &PRIEMBAZA SET &NAMEPOLE={} WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[L]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=.F. WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[N]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=0 WHERE &NAMEPOLE IS NULL
        ENDCASE
    ENDFOR
    SELECT (SELESELE)


***************************************************************************
но проблема в том, что если курсор большой, так эта конструкция долговасто работает.
Существует ли более "лёгкое" решение?
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694072
Pulsar_p,
Ну... Можно еще при запросе с сервера делать преобразования из Null в какое-либо значение...
Или при обработке курсора на клиенте вызывать NVL(<поле>, <значение при Null>)....
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694088
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийНу... Можно еще при запросе с сервера делать преобразования из Null в какое-либо значение...

Можно, конечно, да уж больно код громоздкий получается...

Или при обработке курсора на клиенте вызывать NVL(<поле>, <значение при Null>)....

Да, я пользуюсь такой конструкцией, но это все-таки частный случай, мне бы хотелось простое общее решение (если оно существует) что-то типа
Код: sql
1.
SET NULL OFF

в некоем таком глобальном варианте.
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694104
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

насколько я помню, то можно попробовать обернуть в самом запросе эти нуллы.

Код: sql
1.
select iif(name1=.null.,"",name1) as name1 from table1
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694107
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

тут всё зависит от того, к какому скуль-серверу Вы делаете запрос.
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694112
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

сорри, невнимательно прочитал, Вы используете MS SQL. Его синтаксис я не знаю, но может это поможет:
тынц
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694125
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pВ возвращаемом курсоре попадают поля со значением NULL. Есть ли возможность избавиться от них одним махом?Зачем?...
Существует ли более "лёгкое" решение?Не заниматься ерундой и научиться работать с null.
...
Pulsar_p мне бы хотелось простое общее решение (если оно существует) что-то типа
SET NULL OFF
в некоем таком глобальном варианте.А настройку типа SET .T. OFF не хочется? А SET 0 OFF? Или SET "" OFF? Чем значение null отличается от приведенных? Неумением некоторых работать с этим значением?
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694382
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovВ возвращаемом курсоре попадают поля со значением NULL. Есть ли возможность избавиться от них одним махом?Зачем?

А вот зачем: базу я на скуль перевожу, и есть, скажем, на клиенте у меня такой критерий выборки:
Код: sql
1.
2.
3.
IF cursor.mypole=.F.
бла-бла-бла...
ENDIF



С NULL и без NULL результат получается разный.
Перелопачивать все приложение нужно, меняя вышеуказанное на:
Код: sql
1.
2.
3.
IF cursor.mypole=.F. OR cursor.mypole IS NULL
бла-бла-бла...
ENDIF


У меня сложные конструкции, пропустить боюсь, наступил уже на эти грабли. Мне бы на этапе формирования курсора хитренько почикать эти NULL'ы и дело с концом. Ан нет, костыльный огород городить приходится. И кто NULL придумал, жили ведь раньше без него.
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694405
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_p,

А почему бы сразу тогда не вытянуть в курсор всё без нуллов?
На истину не претендую, но идея , думаю, что понятна.
Код: sql
1.
select * from my_table where my_field is not null
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694418
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pSergey SizovВ возвращаемом курсоре попадают поля со значением NULL. Есть ли возможность избавиться от них одним махом?Зачем?

А вот зачем: базу я на скуль перевожуТем более не надо заниматься ерундой. Кстати, на есть ли на скуле пустая дата? И если нет, то что будешь делать? Опять магические значения?...
У меня сложные конструкции, пропустить боюсь, наступил уже на эти грабли. Мне бы на этапе формирования курсора хитренько почикать эти NULL'ы и дело с концом.Размечтался. :) Впрочем. не ты первый, не ты и последний... Ан нет, костыльный огород городить приходится. Так не городи, а сделай сразу правильно.И кто NULL придумал, жили ведь раньше без него.Кто тебе такую чушь сказал? Он придуман еще до твоего рождения. И на скулях как раз он в полный рост используется. И твое нытье как раз выдает твое полное ламерство в теории баз данных.
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694423
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ping_09Pulsar_p,

А почему бы сразу тогда не вытянуть в курсор всё без нуллов?
На истину не претендую, но идея , думаю, что понятна.
Код: sql
1.
select * from my_table where my_field is not null



Идея понятна, но не удовлетворяет. Дело в том, что из базы я выборку делаю один раз, а затем этот курсор верчу, как хочу. Для разных целей мне нужны разные значения, это всего лишь одно из них, остальные условия могут этого поля не касаться вообще.

Ладно, я так понял простого решения не существует, буду ковырять-лопатить.
Всем Большое спасибо за участие!
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694435
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Sizov.....И твое нытье как раз выдает твое полное ламерство в теории баз данных.

Не судите, да не судимы будете...
...
Рейтинг: 0 / 0
Избавиться от NULL
    #38694437
ping_09
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pulsar_pping_09Pulsar_p,

А почему бы сразу тогда не вытянуть в курсор всё без нуллов?
На истину не претендую, но идея , думаю, что понятна.
Код: sql
1.
select * from my_table where my_field is not null



Идея понятна, но не удовлетворяет. Дело в том, что из базы я выборку делаю один раз, а затем этот курсор верчу, как хочу. Для разных целей мне нужны разные значения, это всего лишь одно из них, остальные условия могут этого поля не касаться вообще.

Ладно, я так понял простого решения не существует, буду ковырять-лопатить.
Всем Большое спасибо за участие!
Ну тогда используйте ISNULL() на клиенте да и всё тут.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Избавиться от NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]