1. 前言
在 MySQL 資料庫中,提升查詢效率的一個重要元素就是 BETWEEN
運算子。這個運算子在檢查資料是否落在特定範圍內時非常方便。它可用於數字、日期以及字串的範圍指定,讓資料庫的搜尋與篩選更加高效。本文將詳細解說 MySQL BETWEEN
運算子的用法、實際範例以及注意事項。
2. BETWEEN 運算子的基本語法
BETWEEN
運算子是什麼
BETWEEN
運算子是 WHERE
子句中的一種條件,用來檢查指定欄位的值是否落在給定範圍內。基本語法如下:
SELECT 欄位名稱
FROM 資料表名稱
WHERE 欄位名稱 BETWEEN 起始值 AND 結束值;
例如,若一個資料表存有員工年齡,就可以使用這個運算子來抽取特定年齡範圍的員工。
否定形式 NOT BETWEEN
若要搜尋不在範圍內的值,可以使用否定形式 NOT BETWEEN
。
SELECT 欄位名稱
FROM 資料表名稱
WHERE 欄位名稱 NOT BETWEEN 起始值 AND 結束值;
3. 數值的範圍指定
如何在數值範圍中使用 BETWEEN
BETWEEN
運算子在數值範圍查詢中非常實用。例如,若要查詢員工薪資在 50000 到 100000 之間的資料,可以這樣撰寫:
SELECT employee_id, name, salary
FROM employees
WHERE salary BETWEEN 50000 AND 100000;
範例資料:
employee_id | name | salary |
---|---|---|
1 | 佐藤 | 45000 |
2 | 鈴木 | 55000 |
3 | 高橋 | 75000 |
4 | 田中 | 120000 |
查詢結果:
employee_id | name | salary |
---|---|---|
2 | 鈴木 | 55000 |
3 | 高橋 | 75000 |
以上查詢僅選出薪資落在 50000 到 100000 範圍內的員工。
與比較運算子的差異
如果使用比較運算子,條件可以寫成:
SELECT employee_id, name, salary
FROM employees
WHERE salary >= 50000 AND salary <= 100000;
使用 BETWEEN
可以讓查詢更簡潔,尤其當有多個範圍條件時,可大幅提升可讀性。

4. 日期範圍指定
如何在日期資料中使用 BETWEEN
BETWEEN
也可以用於日期範圍。例如,若要從訂單資料表中查詢 2024 年 1 月 1 日到 2024 年 12 月 31 日的訂單,可以這樣寫:
SELECT order_id, customer_id, order_date
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
範例資料:
order_id | customer_id | order_date |
---|---|---|
1 | 101 | 2024-01-15 |
2 | 102 | 2024-05-30 |
3 | 103 | 2025-03-01 |
查詢結果:
order_id | customer_id | order_date |
---|---|---|
1 | 101 | 2024-01-15 |
2 | 102 | 2024-05-30 |
這樣,BETWEEN
運算子就會選取出在指定日期範圍內的資料。
時間資料的注意事項
如果日期欄位包含時間資訊,則需要特別注意。例如,order_date
欄位為 DATETIME
型別時,使用 BETWEEN
查詢範圍時,會包含起始日期的 00:00:00 到結束日期的 00:00:00。若要完整涵蓋到當天的最後一秒,可以這樣寫:
WHERE order_date BETWEEN '2024-01-01 00:00:00' AND '2024-12-31 23:59:59';
5. 字串範圍指定
如何在字串資料中使用 BETWEEN
BETWEEN
也能用於字串範圍。例如,若要搜尋產品名稱在 ‘A’ 到 ‘M’ 之間的產品,可以這樣寫:
SELECT product_id, product_name
FROM products
WHERE product_name BETWEEN 'A' AND 'M';
範例資料:
product_id | product_name |
---|---|
1 | Apple |
2 | Banana |
3 | Mango |
4 | Orange |
查詢結果:
product_id | product_name |
---|---|
1 | Apple |
2 | Banana |
3 | Mango |
字母順序的注意事項
在字串範圍查詢時,必須以字母順序為基準。並且需要注意大小寫,因為有些資料庫會區分大小寫。例如,'a'
與 'A'
可能被視為不同的值。
6. 使用 BETWEEN 的注意事項
範圍指定時的注意事項
使用 BETWEEN
時要留意起始值與結束值的順序。如果起始值大於結束值,可能會得到非預期的結果:
SELECT * FROM table_name WHERE column_name BETWEEN 100 AND 50; -- 結果可能不符合預期
此外,BETWEEN
會包含範圍的起始值與結束值,因此在設定條件時要特別小心。
索引與效能
BETWEEN
的效能與一般比較運算子相當。不過若要最佳化查詢效能,仍建議正確建立索引。例如,若在日期欄位建立索引,則使用 BETWEEN
查詢日期範圍時會更快。
7. 實務查詢與應用範例
在多個欄位中使用 BETWEEN
BETWEEN
運算子也可以搭配多個欄位來使用。例如,同時指定產品的價格與庫存數量的範圍,可以寫成:
SELECT product_name, price, stock
FROM products
WHERE price BETWEEN 1000 AND 5000
AND stock BETWEEN 50 AND 200;
此查詢會選出價格在 1000 到 5000 之間,並且庫存在 50 到 200 之間的產品。
NOT BETWEEN
的應用
利用否定形式的 NOT BETWEEN
可以查詢不在範圍內的資料。例如,要搜尋薪資低於 50000 或高於 100000 的員工,可以這樣寫:
SELECT employee_id, name, salary
FROM employees
WHERE salary NOT BETWEEN 50000 AND 100000;
查詢結果:
employee_id | name | salary |
---|---|---|
1 | 佐藤 | 45000 |
4 | 田中 | 120000 |
這樣的查詢會選出薪資不在 50000 至 100000 範圍內的員工。透過 NOT BETWEEN
,可以輕鬆取得反向條件的資料。
8. 查詢的視覺化範例
為了更直觀地展示查詢結果,可以使用簡單的圖示。例如,下圖說明 BETWEEN
的運作方式:
價格範圍: [----- 1000 ---- 5000 -----]
產品A的價格:3000 (範圍內)
產品B的價格:6000 (範圍外)
利用這樣的圖示,可以幫助理解某筆資料是否符合查詢條件。
9. 總結
BETWEEN
運算子在 MySQL 中是一個非常方便的工具,用於執行範圍查詢。它可應用於數值、日期與字串資料,讓查詢語句更簡潔與高效。不過需要注意幾點:BETWEEN
包含範圍的起始值與結束值,以及是否正確建立索引等問題。掌握這些技巧,就能最佳化查詢效能並有效擷取所需資料。
10. 延伸閱讀
若想深入了解更多查詢細節與使用方式,可以參考 MySQL 官方文件或相關專業書籍。此外,親自撰寫並執行查詢範例,也是加深對 BETWEEN
運算子理解的好方法。