Oracleでのnullの扱いについて
たぶん、前にも学習しただろうけど、また忘れてたのでメモ。
たとえば、以下のようなテーブル(TABLE_1)があった場合。
MNG_NO | FLAG | ... |
---|---|---|
001 | 1 | ... |
002 | (null) | ... |
003 | 2 | ... |
004 | 3 | ... |
で、以下のようなSQLを発行した場合
select MNG_NO from TABLE_1 where FLAG not in ('1', '2')
とした場合、MNG_NO='004'しか取得できない。
nullに対する演算はtrueにはならないそうで、MNG_NO='002'は取得できない。
上記のSQLを日本語で言うと、
「FLAGが'1'でも'2'でもないMNG_NOを取得する」
となるため、直感的には'002'も取れる気がする。