[メモ] SQLにおけるNULLを含むカラムとの比較

概要

SQLにおいて、NULLを含む項目との比較が分かりずらい かつ よく忘れてしまうので整理する。

一覧表

a = b

NULLは不明な値として扱われるため、比較結果もNULLになる。

項目a \ 項目b’text’1NULL
’test’TRUEFALSENULL
NULLNULLNULLNULL

a <> b

a = bと同様に、NULLを不明値扱いとしている。

項目a \ 項目b’text’1NULL
’test’FALSETRUENULL
NULLNULLNULLNULL

a IS DISTINCT FROM b

a <> bに対応する、NULLの通常値扱い版

項目a \ 項目b’text’1NULL
’test’FALSETRUETRUE
NULLTRUETRUEFALSE

a IS NOT DISTINCT FROM b

a = bに対応する、NULLの通常値扱い版

項目a \ 項目b’text’1NULL
’test’TRUEFALSEFALSE
NULLFALSEFALSETRUE

参考

メモ

SQLで困ったら、大体PostgreSQLのドキュメントを見れば解決するような気がする。
日本語でちゃんと整理されていて、標準SQLかどうかも分かるように書かれていることが多いので、他のDB使っているときも参考になる。AIさんがあるので、昔ほどは見なくなったけども。