Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / where .. not in (select ..) / 4 сообщений из 4, страница 1 из 1
27.02.2003, 17:42
    #32112294
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where .. not in (select ..)
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
27.02.2003, 18:05
    #32112310
ShgGena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where .. not in (select ..)
V poslednem zaprose poprobuy:
Код: plaintext
1.
select * from test where test_id not in (select to_number(null) from dual);
...
Рейтинг: 0 / 0
27.02.2003, 18:26
    #32112329
Delerium
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where .. not in (select ..)
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
27.02.2003, 18:40
    #32112339
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
where .. not in (select ..)
Ч-черт, извиняюсь, промазал. Вместо "insert into test2 values (null)" написал "insert into test". Тогда все правильно, при наличии NULL-записи запрос не вернет ни одной строки.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / where .. not in (select ..) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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