SQLのBETWEEN
句は、指定された範囲内にデータがあるかどうかを確認するために使用されます。
この句は、範囲の開始値と終了値を指定し、その間にある値を検索します。
具体的な数値、日付、文字列など、さまざまなデータ型で使用可能です。
BETWEENの基本構文
SELECT column_name
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
column_name
チェックする対象の列value1
範囲の開始値value2
範囲の終了値
BETWEEN
句を使用すると、value1
からvalue2
までの値が含まれた行が返されます。
value1
とvalue2
も範囲に含まれる(両端を含む)という点に注意してください。
数値の範囲を検索する例
例えば、商品の価格が100から300の間にある商品を検索する場合は、次のように記述します。
SELECT product_name, price
FROM products
WHERE price BETWEEN 100 AND 300;
このクエリは、価格が100以上300以下の商品を返します。
日付の範囲を検索する例
BETWEEN
は日付でも使用できます。
たとえば、2024年1月1日から2024年12月31日までの注文を検索したい場合は次のようになります。
SELECT order_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
文字列の範囲を検索する例
BETWEEN
を文字列に使用すると、アルファベット順に評価されます。たとえば、名前が「A」から「M」で始まる顧客を検索したい場合は、次のように記述します。
sqlコードをコピーするSELECT customer_name
FROM customers
WHERE customer_name BETWEEN 'A' AND 'M';
このクエリでは、名前がAからMの範囲に含まれるすべての顧客が返されます。
NOT BETWEENを使った例
BETWEEN
の逆の動作を行うには、NOT BETWEEN
を使用します。
たとえば、価格が100から300の範囲に含まれない商品を検索したい場合は、次のように記述します。
SELECT product_name, price
FROM products
WHERE price NOT BETWEEN 100 AND 300;
BETWEENとANDの注意点
BETWEEN
は包括的であり、範囲の開始値と終了値がそのまま結果に含まれます。- 値の型によっては、範囲が異なる結果を返すことがあります。
たとえば、文字列のソート順や日付フォーマットに注意が必要です。
まとめ
SQLのBETWEEN
句は、簡潔に範囲内のデータを検索できる強力なツールです。数値、日付、文字列など、さまざまなデータ型で使用できるため、効率的なデータ検索に役立ちます。以下のポイントに注意して活用しましょう。
- 範囲は包括的であること(両端を含む)
- 文字列や日付の範囲はソート順に影響される
NOT BETWEEN
を使用して範囲外のデータを検索可能
適切に使用することで、クエリのパフォーマンスや可読性を向上させることができます。