摘要:本教程向您介紹 SQL AND 運算子,並展示如何應用它在查詢的 WHERE 子句中構建靈活的條件。
SQL AND 運算子簡介 #
AND 運算子是一個邏輯運算子,它在 SELECT、UPDATE 或 DELETE 語句的 WHERE 子句中組合兩個布林表示式。
以下是 AND 運算子的語法:
expression1 AND expression2;Code language: SQL (Structured Query Language) (sql)如果兩個表示式的計算結果都為 true,則 AND 運算子返回 true。如果兩個表示式中有一個為 false 或 null,那麼即使其中一個表示式為 NULL,AND 運算子也會返回 false。
下表說明了使用 AND 運算子組合 true、false 和 NULL 值時 AND 運算子的結果:
| 表示式1 | 表示式2 | 表示式1 AND 表示式2 |
|---|---|---|
| true | true | true |
| true | false | false |
| true | NULL | NULL |
| false | false | false |
| false | NULL | false |
| NULL | NULL | NULL |
SQL AND 運算子示例 #
我們將使用示例資料庫中的 employees 表來演示 AND 運算子。

以下語句查詢所有職位ID為9且薪水大於5,000的員工:
SELECT
first_name,
last_name,
job_id,
salary
FROM
employees
WHERE
job_id = 9
AND salary > 5000;Code language: SQL (Structured Query Language) (sql)輸出
first_name | last_name | job_id | salary
------------+-----------+--------+---------
Alexander | Hunold | 9 | 9000.00
Bruce | Ernst | 9 | 6000.00Code language: SQL (Structured Query Language) (sql)要查詢所有在1997年至1998年之間加入公司的員工,您可以按如下方式使用 AND 運算子:
SELECT
first_name,
last_name,
hire_date
FROM
employees
WHERE
EXTRACT(year from hire_date) >= 1998
AND EXTRACT(year from hire_date) <= 1999
ORDER BY hire_date;Code language: SQL (Structured Query Language) (sql)輸出
first_name | last_name | hire_date
-------------+-------------+------------
Valli | Pataballa | 1998-02-05
Jose Manuel | Urman | 1998-03-07
Jonathon | Taylor | 1998-03-24
Jack | Livingston | 1998-04-23
Irene | Mikkilineni | 1998-09-28
Guy | Himuro | 1998-11-15
Diana | Lorentz | 1999-02-07
Kimberely | Grant | 1999-05-24
Karen | Colmenares | 1999-08-10
Luis | Popp | 1999-12-07Code language: SQL (Structured Query Language) (sql)短路求值 #
短路特性允許資料庫系統在能夠確定結果後立即停止對邏輯表示式其餘部分的求值。
讓我們看一個例子來更好地理解短路求值特性的工作原理。
請看以下語句:
SELECT
1 = 0
AND 1 = 1 AS result;Code language: SQL (Structured Query Language) (sql)輸出
result
--------
fCode language: SQL (Structured Query Language) (sql)資料庫系統處理這兩個比較,並使用 AND 運算子來評估這兩個結果。
由於短路求值特性,資料庫系統只需要評估第一個表示式:
1 = 0Code language: SQL (Structured Query Language) (sql)原因是第一個表示式返回 false,這導致整個條件返回 false,而不管第二個表示式的結果如何。
短路特性減少了CPU計算,並且在某些情況下有助於防止執行時錯誤。例如:
SELECT
1 = 0
AND 1 / 0 = 1 AS result;Code language: SQL (Structured Query Language) (sql)輸出
result
--------
fCode language: SQL (Structured Query Language) (sql)如果資料庫系統支援短路特性,它將不會評估表示式的右側部分(1/0),從而避免了除以零的錯誤。
摘要 #
- 使用
AND運算子組合兩個布林表示式。 - 如果兩個表示式的計算結果都為
true,則AND運算子返回true。
資料庫 #
測驗 #
本教程是否有幫助?