SQL between 範囲を指定して検索する

SQLのbetweenで範囲を指定して検索するサンプルです。

目次

サンプル 条件を範囲で指定する(Between)
  日時型の項目を範囲で指定する
  Betweenの否定

条件を範囲で指定する(Between)

select * from テーブル名
where 項目名 between 開始値 and 終了値

開始値と終了値の範囲で検索します。
betweenは「間に」という意味です。

以下のテーブルがあるとします。

employeeテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato
4 竹田 takeda
5 渡辺 watanabe

SQL

上記テーブルの列のidに対してbetweenで2から4までを指定します。

select * from employee
where ID between 2 and 4;

 

結果は、以下のとおりです。

employeeテーブル
id name romaji
2 田中 tanaka
3 佐藤 sato
4 竹田 takeda

idの2から4までのデータが抽出されました。

betweenを使用しない場合

select * from employee
where ID >= 2 and ID <= 4;

betweenの代わりに不等号で指定します。

 

日時型の項目を範囲で指定する

日時型の項目を範囲で指定するサンプルです。
日時型とは、OracleのTIMESTAMP型やSQLServerのdatetime型等です。

以下のテーブルがあるとします。

employeeテーブル
id name created_at(日時型)
1 鈴木 2020/04/01 22:30:10
2 田中 2020/05/04 22:45:15
3 佐藤 2020/05/07 23:00:05
4 竹田 2020/06/14 0:41:14

SQL

上記テーブルの日時型の項目に対してbetweenを指定します。created_atは作成日時です。

select * from employee1
where created_at between '2020/05/03' and '2020/05/07'
order by id;

2行目は、それぞれ年月日を指定しています。

 

結果は、以下のとおりです。

employeeテーブル
id name created_at(日時型)
2 田中 2020/05/04 22:45:15

3行目の「2020/05/07 23:00:05」のデータは取得できません。
betweenで指定した「2020/05/07」は「2020/05/07 00:00:00」の意味になるためです。

3行目を取得したい場合は、betweenの終了値を2020/05/08にします。

select * from employee1
where created_at between '2020/05/03' and '2020/05/08'
order by id;

または、時分秒まで指定します。

select * from employee1
where created_at between '2020/05/03' and '2020/05/07 23:59:59'
order by id;

 

結果は、以下のとおりです。

employeeテーブル
id name created_at(日時型)
2 田中 2020/05/04 22:45:15
3 佐藤 2020/05/07 23:00:05

 

Betweenの否定

select * from テーブル名
where 項目名 not between 値 and 値

Betweenで否定を指定できます。

以下のテーブルがあるとします。

employeeテーブル
id name romaji
1 鈴木 suzuki
2 田中 tanaka
3 佐藤 sato
4 竹田 takeda
5 渡辺 watanabe

SQL

上記テーブルに対してbetweenの否定を指定します。

select * from employee
where ID not between 2 and 4;

betweenの前にnotがあります。

 

結果は、以下のとおりです。

employeeテーブル
id name romaji
1 鈴木 suzuki
5 渡辺 watanabe

条件に指定したIDの範囲外の1と5のデータを取得できます。

関連の記事

SQL in句 複数の値を条件にする
SQL like 前方一致、あいまい検索、エスケープ
SQL order by 並び順を指定する(ソート)

△上に戻る