値がNULLのものを取得

カラムに含まれる値がNULLのものを取り出したい場合、比較演算子などでは調べることができません。値がNULLのデータを取得するにはIS NULL句を使います。書式は次の通りです。

SELECT カラム名 , ... FROM テーブル名 WHERE カラム IS NULL;

カラムの値がNULLのデータだけを取得します。IS NULLの代わりにISNULLも使用できます。

またカラムの値がNULLではないデータを取得するにはIS NOT NULL句を使います。

SELECT カラム名 , ... FROM テーブル名 WHERE カラム IS NOT NULL;

カラムの値がNULLではないデータだけを取得します。IS NOT NULLの代わりにNOTNULLやNOT NULLも使用できます。

具体的には次のようになります。

create table data(id integer, data text);

select * from data where data is null;

上記のSELECT文では「data」カラムの値がNULLの場合にデータを取得します。

サンプル

では実際に試してみます。

次のようなデータが格納されたテーブルを対象にします。

p7-1

ではIS NULL句を使って見る前に比較演算子で一度試してみます。まずは「WHERE title = null」を試してみます。

p7-2

「null」や「NULL」と比較しても一致するデータは見つかりません。

次に「WHERE title = '設計A'」と「WHERE NOT title = '設計A'」の両方を試してみます。

p7-3

「WHERE title = '設計A'」に一致するデータは1件ですが、その否定である「WHERE NOT title = '設計A'」でもカラムの値がNULLのものは一致しません。

ではIS NULL句を使ってみます。

select * from doclist where title is null;

p7-4

「title」カラムの値がNULLのデータだけを取得できました。では今度は「title」カラムの値がNULLでないデータだけを取得してみます。

select * from doclist where title is not null;

p7-5

「title」カラムの値がNULLではないデータだけを取得できました。

このようにカラムの値がNULLかどうかを調べるにはIS NULL句を使う必要があります。