値が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);
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');
取得するデータの条件を指定しないでデータを取得した場合は次のようになります。 address カラムに null が格納されているデータがあります。
select * from user;
それでは IS NULL 句を使って address カラムの値に null が含まれているデータだけを取得してみます。
select * from user where address is null;
カラムに null が含まれているデータを取得することができました。
今度は IS NOT NULL 句を使って先ほどとは逆にカラムの値が null ではないデータを取得してみます。
select * from user where address is not null;
カラムに null が含まれていないデータを取得することができました。
なお = 演算子を使ってカラムの値を null と比較しても正しい結果はかえってきません。次のようにいくつかの SELECT 文を実行しています。
select * from user where address = null;
select * from user where address = NULL;
select * from user where address = '';
いずれの場合もデータを取得することできません。このように値が NULL かどうかを調べるには IS NULL 句を使用する必要があります。
-- --
IS NULL 句を使用してカラムの値が NULL かどうかを調べる条件式を記述する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。