SQL nullと文字列の比較

nullとの比較

SQLであるカラムと文字列を比較したとき、そのカラムがNullだと条件に当てはまらなくなる。

SELECT * FROM TABLE WHERE CLM = 'a'; 

以上のような場合、CLMがNullだと当てはまらないのは当然だが、

以下はどうだろう?

SELECT * FROM TABLE WHERE CLM != 'a';

‘a’ という文字列以外のなので、CLMがNullの行も取得できそうな気がする。

しかし、取得できない。

CLMがNullの場合、比較されないので、行は取得できない。

ISNULLを使って空文字に置き換えて比較する。

SELECT * FROM TABLE WHERE ISNULL(CLM,'') != 'a';

以上のようにすれば、比較できるので、Nullの行も取得できる。

参考

Qiita