値がNULLのものを取得(IS NULL句)

条件式を記述する時に IS NULL 句を使用すると、カラムの値が NULL と一致するかどうかの条件式を記述することができます。ここでは SQLite で IS NULL 句を使った条件式の記述方法について解説します。

条件式を記述するときに使用する WHERE 句については「取得するデータの条件を設定(WHERE句)」を参照されてください。

(Last modified: )

IS NULL句を使った条件式の記述

IS NULL句を使用するとカラムの値が 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 user(id integer, name text, address text);

IS NULL句を使った条件式の記述(1)

INSERT 文を使ってテーブルにデータをいくつか格納しておきます。

insert into user values(1, 'Honda', 'Tokyo');
insert into user(id, name) values(2, 'Katou');
insert into user values(3, 'Suzuki', 'Osaka');
insert into user values(4, 'Nishi', 'Nagoya');
insert into user(id, name) values(5, 'Toda');

IS NULL句を使った条件式の記述(2)

取得するデータの条件を指定しないでデータを取得した場合は次のようになります。 address カラムに null が格納されているデータがあります。

select * from user;

IS NULL句を使った条件式の記述(3)

それでは IS NULL 句を使って address カラムの値に null が含まれているデータだけを取得してみます。

select * from user where address is null;

IS NULL句を使った条件式の記述(4)

カラムに null が含まれているデータを取得することができました。

今度は IS NOT NULL 句を使って先ほどとは逆にカラムの値が null ではないデータを取得してみます。

select * from user where address is not null;

IS NULL句を使った条件式の記述(5)

カラムに null が含まれていないデータを取得することができました。

なお = 演算子を使ってカラムの値を null と比較しても正しい結果はかえってきません。次のようにいくつかの SELECT 文を実行しています。

select * from user where address = null;
select * from user where address = NULL;
select * from user where address = '';

IS NULL句を使った条件式の記述(6)

いずれの場合もデータを取得することできません。このように値が NULL かどうかを調べるには IS NULL 句を使用する必要があります。

-- --

IS NULL 句を使用してカラムの値が NULL かどうかを調べる条件式を記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。