SQLでは null=null にならない理由
ジョー・セルコのプログラマのためのSQLは非常に好きな本。全部読んでないけど。
この本で初めて、SQLでは null=null が true ではなく unknown である理由について、納得のいく説明が得られた。
P103にこんな話が載っている:
従業員テーブルに、「車の色」「髪の色」という列があるとする。
「車を持っていない人」「禿の人」の場合、これらの列の値は null である。
ここで、「車と髪の色が同じ人」を検索しようとして
SELECT * FROM 従業員 WHERE 車の色=髪の色
を発行する。
もしnull=nullであれば、「車を持っていない禿の人」が「車と髪の色が同じ人」に該当してしまう。
これは変でしょう。