指定した値の範囲と比較(BETWEEN句)

条件式を記述する時に BETWEEN 句を使用すると、カラムの値が指定した範囲内に含まれているかどうかという条件式を記述することができます。ここでは SQLite で BETWEEN 句を使った条件式の記述方法について解説します。

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

(Last modified: )

BETWEEN句を使った条件式

BETWEEN 句を使うことでカラムの値が値1から値2の間に含まれているかどうか(値1や値2に等しい場合も含みます)の条件式を記述できます。書式は次の通りです。

SELECT カラム名 , ... FROM テーブル名
  WHERE カラム BETWEEN 値1 AND 値2;

カラムの値が値1と値2の間に含まれているデータを取得します。これは比較演算子と論理演算子を使って次のように記述した場合と同じです。

SELECT カラム名 , ... FROM テーブル名
  WHERE カラム >= 値1 AND カラム <= 値2;

またNOT演算子を組み合わせることで指定した範囲に含まれて居ない場合のデータを取得することもできます。

SELECT カラム名 , ... FROM テーブル名
  WHERE カラム NOT BETWEEN 値1 AND 値2;

この場合はカラムの値が値1と値2の間に含まれていない場合にデータを取得します。

----

それでは実際に試してみます。次のようなテーブルを作成しました。

create table user(name text, old integer, address text);

BETWEEN句を使った条件式(1)

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

insert into user values('Suzuki', 24, 'Osaka');
insert into user values('Honda', 18, 'Tokyo');
insert into user values('Yamada', 32, 'Osaka');
insert into user values('Endou', 35, 'Tokyo');
insert into user values('Kudou', 19, 'Nagoya');
insert into user values('Yoshida', 27, 'Osaka');
insert into user values('Hosoe', 26, 'Tokyo');

BETWEEN句を使った条件式(2)

取得するデータの条件を指定しないでデータを取得した場合は次のようにテーブルに含まれるすべてのデータを取得します。

select * from user;

BETWEEN句を使った条件式(3)

それでは BETWEEN 句を使って範囲の指定をしてみます。次の例では old カラムの値が 20 以上 30 以下のデータを取得しています。

select * from user where old between 20 and 30;

BETWEEN句を使った条件式(4)

次に NOT 演算子と組み合わせて old カラムの値が 20 以上 30 以下ではないデータを取得しています。

select * from user where old not between 20 and 30;

BETWEEN句を使った条件式(5)

どちらも条件式に一致したデータだけを取得することができました。

-- --

BETWEEN 句を使ってカラムの値が指定した範囲内にあるかどうかという条件式を記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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