SQL BETWEEN 演算子
1. SQL BETWEEN 演算子
BETWEEN 演算子は、WHERE 句内で使用され、指定された範囲内の値を選択するために使用されます。
この範囲はインクルーシブ(inclusive)です。つまり、範囲の開始値と終了値の両方が結果に含まれます。
値には数値、テキスト、または日付を指定できます。
1.1 例(自分専用の SQL Server を取得)
価格が 10 から 20 の間にあるすべての製品を選択します:
-- 価格が10から20の間の製品をすべて選択 --
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;2. シンタックス
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;3. デモ用データベース
以下は、例題で使用する Products テーブルの抜粋です。
| ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
|---|---|---|---|---|---|
| 1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
| 2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
| 3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
| 4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
| 5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
4. NOT BETWEEN
NOT BETWEEN 演算子は、指定された範囲外の値を選択するために WHERE 句で使用されます。
次の SQL は、価格が 10 から 20 の間ではないすべての製品をリターンします。
4.1 例
-- 価格が10から20の間ではない製品を選択 --
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;5. BETWEEN と IN の併用
次の SQL は、価格が 10 から 20 の間であり、かつ CategoryID が 1、2、または 3 であるすべての製品をリターンします。
5.1 例
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID IN (1,2,3);6. テキスト値での BETWEEN
次の SQL は、ProductName がアルファベット順で 'Geitost' と 'Louisiana Hot Spiced Okra' の間にあるすべての製品を選択します。
6.1 例
-- アルファベット順で指定した範囲内の製品名を選択 --
SELECT * FROM Products
WHERE ProductName BETWEEN 'Geitost' AND 'Louisiana Hot Spiced Okra'
ORDER BY ProductName;7. テキスト値での NOT BETWEEN
次の SQL は、ProductName がアルファベット順で 'Geitost' と 'Louisiana Hot Spiced Okra' の間ではないすべての製品を選択します。
7.1 例
-- アルファベット順で指定した範囲外の製品名を選択 --
SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Geitost' AND 'Louisiana Hot Spiced Okra'
ORDER BY ProductName;8. 日付での BETWEEN
BETWEEN 演算子は、特定の期間内のレコードをフィルタリングする際にも非常に便利です。日付の形式がデータベースの設定(例:'YYYY-MM-DD')と一致していることを確認してください。
次の SQL は、1996年7月に発注されたすべての注文(Orders)を選択します。
8.1 例
-- 1996年7月1日から31日までの注文を選択 --
SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';9. サンプルテーブル
以下は、上記の例で使用した Orders テーブルの抜粋です。
| OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
|---|---|---|---|---|
| 10248 | 90 | 5 | 1996-07-04 | 3 |
| 10249 | 81 | 6 | 1996-07-05 | 1 |
| 10250 | 34 | 4 | 1996-07-08 | 2 |
| 10251 | 84 | 3 | 1996-07-08 | 1 |
| 10252 | 76 | 4 | 1996-07-09 | 2 |