問題ID: 8319 NULL値との比較結果がNULL値
- フォーラムは新サイトへ移行しました。
- このフォーラムではゲスト投稿が禁止されています
問題ID: 8319 NULL値との比較結果がNULL値
msg# 1
hasimohi
投稿数: 14
<解説>
・NOT IN(値のリスト)にNULL値が含まれている場合は、データは1件も返されない
NOT IN(値のリスト)は値のリストと比較した結果が全てFALSEになる場合に条件がTRUEになります。
値のリストにNULL値が含まれている場合は、NULL値との比較結果がNULL値となり、全ての結果がFALSEとならないため、条件はFALSEとなります。条件がFALSEなので、主問合せの結果は0件となります。
→上記の意味がよくわかりません。
具体例を示していただけますか?
・NOT IN(値のリスト)にNULL値が含まれている場合は、データは1件も返されない
NOT IN(値のリスト)は値のリストと比較した結果が全てFALSEになる場合に条件がTRUEになります。
値のリストにNULL値が含まれている場合は、NULL値との比較結果がNULL値となり、全ての結果がFALSEとならないため、条件はFALSEとなります。条件がFALSEなので、主問合せの結果は0件となります。
→上記の意味がよくわかりません。
具体例を示していただけますか?
Re: 問題ID: 8319 NULL値との比較結果がNULL値
msg# 1.1
arashi1977
居住地: 広島
投稿数: 1715
引用:どなたへの依頼事項かわかりませんが、これでお求めの具体例になっているでしょうか?
こちらの公式ドキュメントが参考になるかもしれません。
https://docs.oracle.com/cd/E16338_01/server.112/b56299/conditions013.htm#sthref2022
→上記の意味がよくわかりません。
具体例を示していただけますか?
# sqlplus pingt/oracle
SQL*Plus: Release 11.2.0.2.0 Production on 土 8月 11 00:43:28 2018
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
に接続されました。
SQL> create global temporary table T_8319(
2 id number,
3 name char(30)
4 );
表が作成されました。
SQL> insert into T_8319 values(1,'First');
1行が作成されました。
SQL> insert into T_8319 values(2,'Second');
1行が作成されました。
SQL> insert into T_8319 values(null, 'Null');
1行が作成されました。
SQL> select * from T_8319 where ID not in (1);
ID NAME
---------- ------------------------------
2 Second
SQL> select * from T_8319 where ID not in (1, 2);
レコードが選択されませんでした。
SQL> select * from T_8319 where ID not in(null);
レコードが選択されませんでした。
SQL> select * from T_8319 where ID not in(1, null);
レコードが選択されませんでした。
https://docs.oracle.com/cd/E16338_01/server.112/b56299/conditions013.htm#sthref2022
Re: Re: 問題ID: 8319 NULL値との比較結果がNULL値
msg# 1.1.1
hasimohi
投稿数: 14
ご回答ありがとうございました。