generated at
NULL (SQL)







= < などの比較述語演算子を用いた演算に、 NULL を適用すると、常に結果がunknown (undefined)になる
従って、
A = NULL はunknownだし、
NULL = NULL もunknownになる
そのため、そのクエリはエラーを返したり、想定した結果が返ってこない


以下のテーブルについて考える
sql
CREATE TABLE hoge ( id INT,aq isX BOOLEAN -- NULLを許容するBOOLEAN ); INSERT INTO hoge (id, isX) VALUES (1, true), (2, true), (3, false), (4, NULL);
not true したときは、NULLは返ってこない
SELECT x FROM hoge WHERE NOT (isX = true) としても
結果は false のもののみ
他の言語だと、 x = true | false | null で、
x != true なら
false | null が返ってきそうだが、
そうはならない
以下の2つは、式自体がNULLになるので、何の結果も返ってこない
SELECT x FROM hoge WHERE isX = NULL
SELECT x FROM hoge WHERE isX <> NULL