摘要:在本教程中,您將學習如何使用 SQL BETWEEN 運算子來檢查一個值是否落在特定範圍內。
SQL BETWEEN 運算子簡介 #
BETWEEN 運算子是 SQL 中的邏輯運算子之一。BETWEEN 運算子檢查一個值是否在一個值的範圍內。
以下是 BETWEEN 運算子的語法:
expression BETWEEN low AND high;Code language: SQL (Structured Query Language) (sql)如果 expression 的值大於或等於 (>=) low 值,並且小於或等於 (<=) high 值,則 BETWEEN 運算子返回 true。
技術上,BETWEEN 等效於以下使用大於或等於 (>=) 和小於或等於 (<=) 運算子的表示式:
expression >= low AND expression <= highCode language: SQL (Structured Query Language) (sql)要將一個值與一個不包含邊界的範圍進行比較,您可以使用比較運算子小於 (<) 和大於 (>)。
NOT BETWEEN #
要否定 BETWEEN 運算子的結果,您可以使用 NOT 運算子:
expression NOT BETWEEN low AND highCode language: SQL (Structured Query Language) (sql)如果 expression 的值小於 low 或大於 high,則 NOT BETWEEN 返回 true;否則,它返回 false。
與 BETWEEN 運算子類似,您可以使用小於 (<) 和大於 (>) 運算子以及 OR 運算子重寫 NOT BETWEEN 運算子,如下所示:
expression < low OR expression > highCode language: SQL (Structured Query Language) (sql)在實踐中,您經常在 SELECT 語句的 WHERE 子句中使用 BETWEEN 和 NOT BETWEEN 運算子,以選擇某列值在特定範圍內的行。
SQL BETWEEN 運算子示例 #
我們將使用示例資料庫中的 employees 表來說明 BETWEEN 運算子的工作原理。

選擇特定薪資範圍內的員工 #
以下查詢使用 BETWEEN 運算子查詢薪資在 2,500 到 2,900 之間的員工:
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary BETWEEN 2500 AND 2900
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql) employee_id | first_name | last_name | salary
-------------+------------+-------------+---------
119 | Karen | Colmenares | 2500.00
118 | Guy | Himuro | 2600.00
126 | Irene | Mikkilineni | 2700.00
117 | Sigal | Tobias | 2800.00
116 | Shelli | Baida | 2900.00請注意,結果集包括薪資為 2,500 和 2,900 的員工。
以下查詢返回與上述查詢相同的結果集。但是,它使用的是大於或等於 (>=) 和小於或等於 (<=) 的比較運算子:
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary >= 2500
AND salary <= 2900
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql)使用 SQL NOT BETWEEN 示例 #
以下語句使用 NOT BETWEEN 運算子查詢所有薪資不在 2,500 到 2,900 範圍內的員工:
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 2500 AND 2900
ORDER BY
salary;Code language: SQL (Structured Query Language) (sql) employee_id | first_name | last_name | salary
-------------+-------------+------------+----------
115 | Alexander | Khoo | 3100.00
193 | Britney | Everett | 3900.00
192 | Sarah | Bell | 4000.00
107 | Diana | Lorentz | 4200.00
200 | Jennifer | Whalen | 4400.00
...在日期範圍內使用 SQL BETWEEN 運算子 #
以下示例使用 BETWEEN 運算子查詢所有在 1999年1月1日 至 2000年12月31日 之間加入公司的員工:
SELECT
first_name,
last_name,
hire_date
FROM
employees
WHERE
hire_date BETWEEN '1999-01-01' AND '2000-12-31'
ORDER BY
hire_date;Code language: SQL (Structured Query Language) (sql) first_name | last_name | hire_date
------------+------------+------------
Diana | Lorentz | 1999-02-07
Kimberely | Grant | 1999-05-24
Karen | Colmenares | 1999-08-10
Luis | Popp | 1999-12-07
Charles | Johnson | 2000-01-04Code language: plaintext (plaintext)以下示例使用 NOT BETWEEN 運算子查詢在 1994年1月1日 之前或 1999年12月31日 之後加入公司的員工:
SELECT
first_name,
last_name,
hire_date
FROM
employees
WHERE
hire_date NOT BETWEEN '1994-01-01' AND '1999-12-31'
ORDER BY
hire_date;Code language: SQL (Structured Query Language) (sql) first_name | last_name | hire_date
------------+-----------+------------
Steven | King | 1987-06-17
Jennifer | Whalen | 1987-09-17
Neena | Kochhar | 1989-09-21
Alexander | Hunold | 1990-01-03
Bruce | Ernst | 1991-05-21
Lex | De Haan | 1993-01-13
Charles | Johnson | 2000-01-04Code language: plaintext (plaintext)在函式中使用 SQL BETWEEN 運算子的示例 #
以下示例將 BETWEEN 運算子與 EXTRACT 函式結合使用,以查詢在 1999 年至 2000 年間加入公司的員工:
SELECT
first_name,
last_name,
EXTRACT(YEAR FROM hire_date) joined_year
FROM
employees
WHERE
EXTRACT(YEAR FROM hire_date) BETWEEN 1999 AND 2000
ORDER BY
hire_date;Code language: PostgreSQL SQL dialect and PL/pgSQL (pgsql)輸出
first_name | last_name | joined_year
------------+------------+-------------
Diana | Lorentz | 1999
Kimberely | Grant | 1999
Karen | Colmenares | 1999
Luis | Popp | 1999
Charles | Johnson | 2000Code language: plaintext (plaintext)在此示例中:
- 首先,
EXTRACT()函式從入職日期中返回年份。 - 其次,
BETWEEN運算子使用EXTRACT函式的結果,並檢查它是否在1999到2000的範圍內。
如果您的資料庫系統不支援 EXTRACT() 函式,您必須找到一個類似的函式來從日期中提取年份。
摘要 #
- 使用
BETWEEN運算子檢查一個值是否在特定範圍內。 - 使用
NOT運算子來否定BETWEEN運算子。
資料庫 #
- PostgreSQL BETWEEN 運算子
- Oracle BETWEEN 運算子
- SQL Server BETWEEN 運算子
- MySQL BETWEEN 運算子
- SQLite BETWEEN 運算子
- Db2 BETWEEN 運算子
- MariaDB BETWEEN 運算子