SQLite | データの検索 | 指定した値の範囲と比較する(BETWEEN句)

BETWEEN句を使うと、カラム値が指定した範囲内にあるかどうかを条件式で判定できます。ここでは、その書き方を説明します。WHERE句の基本については、検索条件を設定する(WHERE句)を参照してください。

BETWEEN句を使った条件式

BETWEENは両端の値も範囲に含みます。

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

この条件は、比較演算子と論理演算子を使った次の条件と同じです。

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

指定範囲の外にある値を取得するにはNOT BETWEENを使います。

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

テーブルを作成し、サンプルデータを追加します。

create table user (name text, old integer, address text);
insert into user values ('devkuma', 39, 'Seoul');
insert into user values ('kimkc', 34, 'Busan');
insert into user values ('araikuma', 26, 'Seoul');
insert into user values ('happykuma', 19, 'Seoul');
insert into user values ('mykuma', 27, 'Daejeon');
insert into user values ('yourkuma', 28, 'Gwangju');
insert into user values ('raccoon', 31, 'Busan');

条件を指定しなければ、すべての行が返されます。

sqlite> select * from user;
devkuma     39  Seoul
kimkc       34  Busan
araikuma    26  Seoul
happykuma   19  Seoul
mykuma      27  Daejeon
yourkuma    28  Gwangju
raccoon     31  Busan

次のクエリは、oldが20以上30以下の行を返します。

select * from user where old between 20 and 30;
araikuma    26  Seoul
mykuma      27  Daejeon
yourkuma    28  Gwangju

NOTを追加すると、その範囲外の行が返されます。

select * from user where old not between 20 and 30;
devkuma     39  Seoul
kimkc       34  Busan
happykuma   19  Seoul
raccoon     31  Busan