SQLのbetweenで範囲を指定して検索するサンプルです。
目次
サンプル | 条件を範囲で指定する(Between) |
日時型の項目を範囲で指定する | |
Betweenの否定 |
条件を範囲で指定する(Between)
select * from テーブル名 where 項目名 between 開始値 and 終了値 |
開始値と終了値の範囲で検索します。
betweenは「間に」という意味です。
以下のテーブルがあるとします。
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;
結果は、以下のとおりです。
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型等です。
以下のテーブルがあるとします。
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行目は、それぞれ年月日を指定しています。
結果は、以下のとおりです。
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;
結果は、以下のとおりです。
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で否定を指定できます。
以下のテーブルがあるとします。
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があります。
結果は、以下のとおりです。
id | name | romaji |
---|---|---|
1 | 鈴木 | suzuki |
5 | 渡辺 | watanabe |
条件に指定したIDの範囲外の1と5のデータを取得できます。
関連の記事
SQL in句 複数の値を条件にする
SQL like 前方一致、あいまい検索、エスケープ
SQL order by 並び順を指定する(ソート)