странное поведение с предложением IN - PullRequest
3 голосов
/ 23 августа 2010

я нашел этот сайт: здесь

очень хорошо описано, почему это работает, а почему нет.

но мой вопрос немного другой.

select 'true' from dual where 'test' not in ('test2','');

почему этот запрос не возвращает строку?
'' обрабатывается как null?

спасибо за помощь

Ответы [ 2 ]

12 голосов
/ 23 августа 2010

Ваши подозрения были правильными .

Таким образом, ваш запрос в основном

WHERE 'test' <> 'test2' and  'test' <> Null

, который оценивается как

WHERE true and unknown

Что является unknown

select * from dual where '' = '';

даст тот же (отсутствие) результатов

2 голосов
/ 23 августа 2010

Да, в Oracle пустая строка имеет значение NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...