摘要:在本教學中,您將學習如何使用 SQL NOT 運算子來否定 SELECT 陳述式中 WHERE
子句的布林運算式。
SQL NOT 運算子簡介
您已經學習如何使用各種邏輯運算子,例如 AND、OR、LIKE、BETWEEN、IN 和 EXISTS。這些運算子可協助您在 WHERE 子句中建立彈性的條件。
若要否定任何布林運算式的結果,您可以使用 NOT
運算子。以下說明如何使用 NOT
運算子
NOT [Boolean_expression]
Code language: SQL (Structured Query Language) (sql)
下表顯示 NOT
運算子的結果。
NOT | |
TRUE (真) | FALSE (假) |
FALSE (假) | TRUE (真) |
NULL (空值) | NULL (空值) |
SQL NOT 運算子範例
我們將使用 employees
表格來幫助您更好地理解 NOT
運算子。

下列陳述式會擷取所有在部門 ID 為 5 的員工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
department_id = 5
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)

若要取得在部門 ID 為 5 且薪水不高於 5000 的員工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
department_id = 5
AND NOT salary > 5000
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)

SQL NOT 與 IN 運算子範例
若要否定 IN 運算子,您可以使用 NOT 運算子。例如,下列陳述式會取得所有不在部門 1、2 或 3 工作的員工。
SELECT
employee_id,
first_name,
last_name,
department_id
FROM
employees
WHERE
department_id NOT IN (1, 2, 3)
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)

SQL NOT LIKE 運算子範例
您可以使用 NOT LIKE 來否定 LIKE 運算子。例如,下列陳述式會擷取所有名字不是以字母 D 開頭的員工。
SELECT
first_name,
last_name
FROM
employees
WHERE
first_name NOT LIKE 'D%'
ORDER BY
first_name;
Code language: SQL (Structured Query Language) (sql)

SQL NOT BETWEEN 範例
以下範例示範如何使用 NOT 來否定 BETWEEN 運算子,以取得薪水不在 5,000 到 1,000 之間的員工。
SELECT
employee_id,
first_name,
last_name,
salary
FROM
employees
WHERE
salary NOT BETWEEN 3000
AND 5000
ORDER BY
salary;
Code language: SQL (Structured Query Language) (sql)
SQL NOT EXISTS 範例
請參閱下列 employees
和 dependents
表格

下列查詢使用 NOT EXISTS
運算子來取得沒有任何受撫養人的員工。
SELECT
employee_id,
first_name,
last_name
FROM
employees e
WHERE
NOT EXISTS (
SELECT
employee_id
FROM
dependents d
WHERE
d.employee_id = e.employee_id
);
Code language: SQL (Structured Query Language) (sql)
現在您應該知道如何使用 NOT 運算子來否定布林運算式。
這個教學對您有幫助嗎?