SQLでは、NULLとの比較は = NULL ではなく IS NULL と書く。これは何故だろう?
NULL というのはデータではなく、データがないことを示すマークではないかと思う。
だから、「NULL との比較」ってのは実はおかしい。比較対象がないんだから比較できない。だから = じゃない。
でも「データがあるかないか」は調べられるし、調べられないと困る。だから IS という演算子があるんじゃないだろうか。
狙っていたわけではないけれど、ここで昨日のエントリが絡んでくる。
「Aさんの家とBさんの家には同じ車がある」という命題は、どちらか、または両方の家に比較対象になる車が無ければ真になる。
けれど同時に、「Aさんの家とBさんの家には違う車がある」も真になる。
どうしてこんな変なことになったかと言えば、比較対象が無いのに、無理に比較しようとしたからだ。
自然に考えれば「無いものとは比較できない」が正しい。
けど「無いかどうか」なら判定はできる。
というわけ…だったらいいなぁw