Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Объясните, пожалуйста как так может быть:
Есть таблица, в которой одно поле имеет значения A,B,C и null
(select поле from table group by поле)
так вот,
select * from table
where поле is null
возвращает значения, а вот
select * from table
where поле not in (A,B,C)
не возвращает ничего.
4 фев 09, 16:52    [6779250]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
Для того, чтоб вернул нулы, нужно явно указывать is null, куча тем подобных была, поищите.
4 фев 09, 16:55    [6779271]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
при использовании с NULL обычные операторы сравнения всегда возвращают NULL, именно потому и используются IS NULL, IS NOT NULL
4 фев 09, 16:55    [6779273]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
Elic
Member

Откуда:
Сообщений: 29984
RTFM Nulls with Comparison Conditions (FAQ)
4 фев 09, 16:57    [6779284]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Но вот интересно, что:

select поле from table
where поле is null
group by поле

не совпадает с

select a1-a2 from
(select поле a1 from table
group by поле a1),
select поле a2 from table
where поле is not null
group by поле)
4 фев 09, 17:04    [6779323]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1519
ID IN (1,2) эквивалентно ID = 1 OR id = 2
ID NOT IN (1,2) эквивалентно ID <> 1 and id <> 2
И в том и в том случе сравнение типа ID=NULL вернет "UNKNOWN" и следовательно не попадет в результат запроса. Для сравнения с NULL надо дополнительно использовать IS NULL или IS NOT NULL, как вам уже подсказали выше.
4 фев 09, 17:06    [6779339]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
mcureenab
Member

Откуда: Murmansk
Сообщений: 5928
berserkk,

ты чё хотел сказать то?
4 фев 09, 17:07    [6779341]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
berserkk
Но вот интересно, что:

select поле from table
where поле is null
group by поле

не совпадает с

select a1-a2 from
(select поле a1 from table
group by поле a1),
select поле a2 from table
where поле is not null
group by поле)


На каком диалекте пишете?

И почему должно совпасть?
4 фев 09, 17:08    [6779349]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Собственно, у меня ламерская задача то: это поле таблицы проиндексировано, но если есть условие is null, то индекс не работает. В случае is not null, все в порядке. Таблица эта находится в другой базе, соединяюсь с ней по линку
4 фев 09, 17:11    [6779372]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
_Alex_SMIRNOV_
Member

Откуда: Киев
Сообщений: 1519
berserkk
Собственно, у меня ламерская задача то: это поле таблицы проиндексировано, но если есть условие is null, то индекс не работает. В случае is not null, все в порядке. Таблица эта находится в другой базе, соединяюсь с ней по линку

Так и должно быть, так как нулы не попадают в индекс
4 фев 09, 17:12    [6779383]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
Relogin
Member

Откуда: Abhasia
Сообщений: 594
Для сравнивания с NULL
или ОТДЕЛЬНО писать сравнение <поле> is null
или применить преобразование значение null к любому не null
nvl(<поле>,<значение>)=...
Можно юзать nvl2
4 фев 09, 17:12    [6779393]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Так вот, как бы это обойти?
4 фев 09, 17:13    [6779404]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
berserkk
Собственно, у меня ламерская задача то: это поле таблицы проиндексировано, но если есть условие is null, то индекс не работает. В случае is not null, все в порядке. Таблица эта находится в другой базе, соединяюсь с ней по линку

Indexes and Nulls
4 фев 09, 17:15    [6779418]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
а нужно ли?
4 фев 09, 17:15    [6779419]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Индекс нужен при поиске по другим значениям поля, а при сортировке по null, запрос страшно тормозит. Скажите,плиз, как Вы поступаете в таких случаях?
4 фев 09, 17:21    [6779466]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
berserkk
Индекс нужен при поиске по другим значениям поля, а при сортировке по null, запрос страшно тормозит. Скажите,плиз, как Вы поступаете в таких случаях?


Сортровка и индекс не связаны!
4 фев 09, 17:22    [6779478]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
так например
4 фев 09, 17:24    [6779487]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
berserkk
Member

Откуда:
Сообщений: 339
Все, получилось, всем огромное спасибо
nvl(поле,'1')='1' работает быстро
4 фев 09, 17:25    [6779494]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
berserkk
Все, получилось, всем огромное спасибо
nvl(поле,'1')='1' работает быстро

Какой индекс создан?
4 фев 09, 17:28    [6779511]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
heldir
Member

Откуда: Запорожье->Киев->Montreal
Сообщений: 757
berserkk
Все, получилось, всем огромное спасибо
nvl(поле,'1')='1' работает быстро


а что будете делать, если в поле появятся значения '1'? :)
4 фев 09, 17:29    [6779519]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
Batsall
Member

Откуда: Москва
Сообщений: 360
berserkk
Все, получилось, всем огромное спасибо
nvl(поле,'1')='1' работает быстро
Что-то мне подсказывает, что автору необходимо
order by поле nulls first
4 фев 09, 17:59    [6779767]     Ответить | Цитировать Сообщить модератору
 Re: поле null  [new]
Relogin
Member

Откуда: Abhasia
Сообщений: 594
Что-то сегождян на null потянуло неслабо... весь день гутарим
4 фев 09, 21:46    [6780520]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить