Developer

【SQL基礎】BETWEEN演算子による条件指定
2020.12.26
Lv1

【SQL基礎】BETWEEN演算子による条件指定

本項では、BETWEEN演算子について説明していきます。


BETWEENの基本構文

範囲を指定して検索するには、比較演算子と論理演算子を使って記述することもできますが
BETWEEN演算子を使って記述することもできます。
構文は以下になります。

対象 BETWEEN 開始値 AND 終了値;

否定形の場合は下記になります。

対象 NOT BETWEEN 開始値 AND 終了値;

比較演算子と論理演算子を使って記述した場合は下記になります。

対象 >= 開始値 AND 対象<= 終了値;

否定形の場合は下記になります。

対象 < 開始値 AND 対象 > 終了値;

注意点としては、BETWEENを使った場合と使わなかった場合を見比べてもらえばわかるかと思いますが
BETWEENは、対象が開始値以上終了値以下なので、開始値や終了値と同等の場合も含みます。
逆に、否定形のNOT BETWEENはその逆で、開始値と終了値と同等の場合は含まれません。

では、実際にやってみましょう。
使用するテーブルは引き続き下記になります。

まずは、BETWEENで26歳から29歳の人のデータを抽出してみましょう。

SELECT *
FROM teachers
WHERE age BETWEEN 26 AND 29;

開始値と終了値も含んだ年齢が26~29歳の人のデータが抽出できました。

次に、NOTを付けて否定形でやってみます。

SELECT *
FROM teachers
WHERE age NOT BETWEEN 26 AND 29;

開始値と終了値を含まない、26~29歳以外の人のデータが抽出できたことが確認できました。


今回の学習ポイント

・BETWEEN演算子で範囲検索できる。
・BETWEENの検索結果には、開始値と終了値が含まれる。


練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
また、ダウンロードしたら以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.zip

[sql] CREATE DATABASE worldcup2014;

use worldcup2014

source C:\worldcup2014.sql
[/sql]

1.BETWEEN演算子を使用して生年月日(players.birth)が1995年代の選手のデータを抽出してください。

答え
[sql] SELECT *
FROM players
WHERE birth BETWEEN ‘1995-1-1’ AND ‘1995-12-31’;
[/sql]

生年月日が1995年代の人なので、1995年1月1日から1995年12月31日を指定します。
日付で検索する場合の注意点として、検索対象のカラムがDATETIMEで時間のデータも保持していた場合
今回のように時間を省いて年月日だけで範囲を指定すると’1995-1-1 00:00:00.000000′ ~ ‘1955-12-31 00:00:00.000000’の検索になり
1995年12月31日は0時ちょうど以外が含まれないことになるので、カラムのデータ型の最大値で検索するなど時間に対する考慮が必要です。

2.BETWEEN演算子を使用して、体重が60kg未満100kg以上の選手を抽出してください。

答え
[sql] SELECT *
FROM players
WHERE weight NOT BETWEEN 60 AND 99;
[/sql]

体重が60未満100以上ということは、60~99を除いた範囲ということなので「NOT BETWEEN」その範囲を指定します。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ