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'も取れる気がする。