powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / where .. not in (select ..)
4 сообщений из 4, страница 1 из 1
where .. not in (select ..)
    #32112294
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle9i Release 9.2.0.1.0.

Я попробовал сабж, где в подзапросе есть NULL-запись, и перестал что-либо понимать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
dan@oraspb>; create table test (test_id number( 9 ))
   2   /

Table created.

dan@oraspb>; create table test2 (test_id number( 9 ))
   2   /

Table created.

dan@oraspb>; insert into test(test_id) values ( 1 );

 1  row created.

dan@oraspb>; insert into test(test_id) values ( 2 );

 1  row created.

dan@oraspb>; 
dan@oraspb>; insert into test(test_id) values ( 1 );

 1  row created.

dan@oraspb>; insert into test(test_id) values (null);

 1  row created.

dan@oraspb>; 
dan@oraspb>; commit;

Commit complete.

dan@oraspb>;                  
dan@oraspb>; set null NULL;
dan@oraspb>; select * from test where test_id not in (select test_id from test2);

   TEST_ID
 ----------
 
          1 
          2 
          1 
NULL

dan@oraspb>; select * from test where test_id not in (select null from dual);

no rows selected


Почему 1-й запрос вернул 4 записи, а 2-й ни одной?
...
Рейтинг: 0 / 0
where .. not in (select ..)
    #32112310
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V poslednem zaprose poprobuy:
Код: plaintext
1.
select * from test where test_id not in (select to_number(null) from dual);
...
Рейтинг: 0 / 0
where .. not in (select ..)
    #32112329
Delerium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Primer interesnij. Dumaju, shto Oracle "select test_id from test2" v dannoj situaciji ponjimajet kak pustoj spisok.
"select null from dual" vozvrashchajet NULL, no i sljedovateljno proverjajetsja pravda lji shto (1 = NULL) i (2=NULL), no rezuljtat nje true i nje false a unknown. Paskoljku v takoj situaciji nevazmozhno opredeljitj katoriji zapisji iz tabljici test vibiratj, njechevo i njevazvrashchajetsja ...

SQL> select * from test where test_id not in (null);
no rows selected
...
Рейтинг: 0 / 0
where .. not in (select ..)
    #32112339
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ч-черт, извиняюсь, промазал. Вместо "insert into test2 values (null)" написал "insert into test". Тогда все правильно, при наличии NULL-записи запрос не вернет ни одной строки.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / where .. not in (select ..)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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