支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


BETWEENの基礎編

BETWEEN演算子を使用すると、範囲を指定した条件を使用できます

■BETWEEN演算子を使用した条件の指定方法
①WHERE 列名 BETWEEN 下限値 AND  上限値
②WHERE 列名 NOT BETWEEN 下限値 AND  上限値

BETWEENを指定した場合は列値が下限値以上かつ上限値以下の場合にTRUEになります。
それに対し、NOT BETWEENを指定した場合は、列値が下限値よりも小さい、または上限値よりも大きい場合にTRUEになります。

上記の文だけだと分かりづらいと思うので、不等号で分かりやすく説明します。
■BETWEENの場合
WHERE 列名 >= 10000 AND 列名 <= 20000
■NOT BETWEENの場合
BETWEENで指定した値以外を指します。

※注意点
指定範囲に使われてる文字に注意しましょう。
BETWEENの場合は、以上・以下が使用されています。
それに対し、NOT BETWEENは小さい・大きいが使用されています。
よって、以下のポイントは重要なので覚えておく必要があります。
・BETWEEN演算子を指定した場合、境界値も取り出す範囲に含まれます。
・NOT BETWEENを指定した場合、境界値は取り出す範囲に含まれません。

BETWEENの応用編

今まではBETWEENの使用方法について触れてきました。
今度は、下限値や上限値の範囲指定について触れていきます。

■日付を範囲指定する場合
以下は2020年1月1日から2021年1月1日までが指定範囲のSQL文です。
WHERE 列名 BETWEEN '2020-01-01' AND '2021-01-01'

※注目ポイント
・日付を指定する場合は一重引用符「’」を使用します。
・日付書式は日本語環境のデフォルトである「年ー月ー日」になりますが、英語環境ではデフォルトの日付書式は「日ー月ー年」になります。

■文字列を指定する場合
以下は頭文字がCからHで終わる文字列を参照するためのSQL文です。
WHERE 列名 BETWEEN 'C’ AND 'H’

データの中に、頭文字がHから始まる文字列が複数あり、それらを参照したい場合は上記のSQL文だと参照することが出来ません。
何故なら、’C' < ’Hair' < ’H’が偽となるため、実行結果にHairが含まれません。
さらに深堀すると’H' < ’Hair'となるからです。

※注目ポイント
・文字を指定する場合は一重引用符「’」を使用します。
・文字列の場合、指定範囲に気を付けましょう。

■境界値を含まず範囲指定する場合
BETWEENを使用して範囲指定する場合は、以上・以下でした。
ですが、NOT INを使用することで境界値を含まず範囲指定することが可能です。
例えば、2020年1月1日から2020年12月31日を指定範囲にし、境界値である2020年12月31日を除外したい場合のSQL文が以下になります。

WHERE (列名 BETWEEN ’2020-01-01' AND '2020-12-31')
AND 列名 NOT IN (’2020-12-31’)

※注目ポイント
・NOT INを不等号で表すことも出来ます。その場合は、NOT INではなく!=と書きましょう。

まとめ

・範囲条件指定にBETWEENを使用すると、可読性がよくなる。
・NOT INなどを組み合わせて、以上・小さいの指定が可能になる。