SQLで、= NULLではなく、IS NULLと書く理由
NULL (SQL)を= NULLではなくIS NULLと書く理由は、SQLのNULLは値でも変数でもないから
値ではない特殊なNULL用に、特殊な構文ISが必要になった
例
以下のテーブルについて考える
code:sql
CREATE TABLE hoge (
id INT,
isX BOOLEAN -- NULLを許容するBOOLEAN
);
INSERT INTO hoge (id, isX) VALUES
(1, true), (2, true), (3, false), (4, NULL);
以下の2つは、式自体がNULLになるので、何の結果も返ってこない
SELECT x FROM hoge WHERE isX = NULL
SELECT x FROM hoge WHERE isX <> NULL
NULLだけ取り出すなら、IS NULLという構文を使う必要がある
SELECT x FROM hoge WHERE isX IS NULL
参考
3値論理
Fatal Flaws in SQL
The Relational Model for Database Management: Version 2