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