powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по основам - NULL (IN, NOT IN)
3 сообщений из 3, страница 1 из 1
Вопрос по основам - NULL (IN, NOT IN)
    #39474165
ToKnowSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!

Ребят поясните, пожалуйста, почему, когда в результирующем множестве присутствует NULL и используется оператор IN, то запрос отрабатывает.
А стоит поставить ему отрицание NOT, то запрос не отрабатывает? Получается, что в случае отрицания, если встречается NULL, то подзапрос сразу возвращает NULL?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select dummy from dual 
       where 1 in (select 1 from dual 
                   union 
                   select null from dual)

---- Выводит X


select dummy from dual 
       where 1 not in (select 2 from dual 
                   union 
                   select null from dual)

---- Пусто
...
Рейтинг: 0 / 0
Вопрос по основам - NULL (IN, NOT IN)
    #39474168
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM IN Condition (FAQ)
Код: plaintext
1.
SELECT 'True' FROM employees
    WHERE department_id NOT IN (10, 20, NULL); 
The preceding example returns no rows because the WHERE clause condition evaluates to:
Код: plaintext
department_id != 10 AND department_id != 20 AND department_id != null
...
Рейтинг: 0 / 0
Вопрос по основам - NULL (IN, NOT IN)
    #39474194
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ там же
https://docs.oracle.com/cd/E11882_01/server.112/e41084/conditions013.htm#SQLRF52169
Код: plsql
1.
2.
3.
NOT IN 
Equivalent to !=ALL. 
Evaluates to FALSE if any member of the set is NULL.



Желтым выделил приведенное в документации неправильное,
но доходчивое объяснение (для самых непонятливых?!).

Помним, что в выборку попадают только те строки,
для которых результат вычисления условия фразы WHERE дает TRUE
не FALSE? и не UNKNOWN (NULL)!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по основам - NULL (IN, NOT IN)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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