SQL BETWEEN 運算子

摘要:在本教程中,您將學習如何使用 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 子句中使用 BETWEENNOT BETWEEN 運算子,以選擇某列值在特定範圍內的行。

SQL BETWEEN 運算子示例 #

我們將使用示例資料庫中的 employees 表來說明 BETWEEN 運算子的工作原理。

SQL BETWEEN operator - employees table

選擇特定薪資範圍內的員工 #

以下查詢使用 BETWEEN 運算子查詢薪資在 2,5002,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,5002,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,5002,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 函式的結果,並檢查它是否在 19992000 的範圍內。

如果您的資料庫系統不支援 EXTRACT() 函式,您必須找到一個類似的函式來從日期中提取年份。

摘要 #

  • 使用 BETWEEN 運算子檢查一個值是否在特定範圍內。
  • 使用 NOT 運算子來否定 BETWEEN 運算子。

資料庫 #

測驗 #

本教程是否有幫助?
© .