範囲を絞るときどんな演算子を使いますか?
最もよく使うのは比較演算子でしょう.
<(小なり)、>(大なり)は数式のように使えます.
同じように範囲を指定できる演算子にBETWEEN演算子があります.
比較演算子と比べると汎用性は低いですが、可読性が高いのはBETWEEN演算子でしょう.
今回はBETWEEN演算子の使い方、そのポイントについてご紹介します。
BETWEEN演算子の基本形
BETWEEN演算子はこのように書きます.
SELECT
カラム
FROM
テーブル
WHERE カラム BETWEEN 条件1 AND 条件2
BETWEEN を書く位置は WHERE句です.
WHERE と BETWEEN の間にはカラム書きましょう.
このカラムが範囲指定の対象です.
BETWEEN の後には範囲を絞る条件1と条件2を書きます.
英語の構文のようで覚えやすいなと思いました.
「BETWEEN A AND B」と覚えましたよね.
次は実際にBETWEEEN演算子を使ってみましょう。
BETWEEN演算子を使い範囲を指定する
2023年7月27日10時00分00秒〜2023年7月27日11時00分00秒まで1分置きのデータを用意しました.
BETWEEN演算子を使い10時00分~10時15分まで表示しましょう.
SELECT
datetime
FROM
`test.20230727_time`
WHERE
datetime BETWEEN '2023-07-27 10:00:00'
AND '2023-07-27 10:15:00'
ORDER BY
datetime ASC
指定した範囲のデータをきちんと取れていますね.
ここからはBETWEEN演算子のポイントをまとめます。
ポイント1 境界値は含まれる
BETWEEN演算子は条件値を含んだ結果を返します.
日本語にすると「条件1以上、条件2以下」です.
未満ではないことに注意しましょう.
比較演算子になおすと次のようになります.
SELECT
datetime
FROM
`test.20230727_time`
WHERE
datetime >= '2023-07-27 10:00:00'
AND datetime <= '2023-07-27 10:15:00'
ORDER BY
datetime ASC
なぜ条件に指定した値まで含むかは公式資料を見ると分かりました。
expr1 BETWEEN expr2 AND expr3
Returns
Google Cloudtrue
if the value ofexpr1
is greater than or equal toexpr2
, and less than or equal toexpr3
.
カラム(expr1)が条件1(expr2)よりも大きいまたは等しい、かつ条件2(expr3)よりも小さいまたは等しいとき真を返す
等しい場合も真とするため、10時00分や10時15分も表示されていたんですね。
比較演算子を使うよりもBETWEEN演算子を使ったほうが読みやすいと思いました.
比較演算子は矢印の向きに注意する必要がありましたが、BETWEEN演算子はその必要がありません.
ポイント2 ORは使えない
AND が使えたので、OR も使えるか試しましたがだめでした.
BWTWEEN と AND はセットのようです.
ほんと英語のように「BETWEEN A AND B」で覚えましょう!
いずれか1つの条件を満たしたいときは比較演算子を使いOR条件を使うのがよさそうですね。
ポイント3 条件2は条件1よりも大きい値でないといけない
条件2は条件1よりも必ず大きい値を指定しなければなりません.(条件1<条件2)
条件2のほうが小さい時うまく範囲を指定できないので注意しましょう.
SELECT
datetime
FROM
`test.20230727_time`
WHERE
datetime BETWEEN '2023-07-27 10:15:00'
AND '2023-07-27 10:00:00'
ORDER BY
datetime ASC
まとめ
今回はBETWEEN演算子の使い方やその特徴について紹介しました.
基本的な使い方はSQLと同じでしたね.
SQLでもBETWEEN演算子は条件値を含んだ結果を返します.
ポイントはこちらでした.
- 「BETWEEN 条件1 AND 条件2」は「条件1以上条件2以下」という意味
- AND を OR に書き換えられない
- 「条件2 > 条件1」 条件2は条件1よりも大きい値を書く
BETWEEN演算子は 「条件1 >= AND <= 条件2」と同じ意味があります.
BETWEEN演算子のほうや読みやすいメリットがあると思いました.