摘要:在本教程中,您將學習關於 NULL 的知識,以及如何使用 SQL IS NULL 運算子來測試一個值是否為 NULL。
資料庫中的 NULL 簡介 #
在資料庫領域,NULL 是一個標記,表示資料庫中未知或缺失的資料。
例如,如果您在儲存員工記錄時不知道他們的電話號碼,您可以使用 NULL 來表示未知的電話號碼。
NULL 很特殊,因為您無法將其與任何值進行比較,甚至與 NULL 本身也不行。
以下語句將 NULL 與數字 5 進行比較,結果為 NULL
SELECT
NULL = 5 AS result;Code language: SQL (Structured Query Language) (sql)輸出
result
--------
NULLCode language: SQL (Structured Query Language) (sql)NULL 不等於它自身,如以下語句所示
SELECT
NULL = NULL AS result;Code language: SQL (Structured Query Language) (sql)輸出
result
--------
NULLCode language: SQL (Structured Query Language) (sql)您不能使用等於號(=)來檢查一個值是否為 NULL。
例如,以下語句嘗試查詢沒有電話號碼的員工
SELECT
first_name,
last_name,
phone_number
FROM
employees
WHERE
phone_number = NULL;Code language: SQL (Structured Query Language) (sql)輸出
first_name | last_name | phone_number
------------+-----------+--------------
(0 rows)Code language: SQL (Structured Query Language) (sql)IS NULL 運算子 #
要測試一個值是否為 NULL,您需要使用 IS NULL 運算子
expression IS NULLCode language: SQL (Structured Query Language) (sql)如果表示式的結果是 NULL,IS NULL 運算子返回 true。否則,它返回 false。
IS NOT NULL 對 IS NULL 運算子的結果取反
expression IS NOT NULLCode language: SQL (Structured Query Language) (sql)如果表示式是 NULL,IS NOT NULL 返回 false,否則返回 true。
SQL IS NULL 運算子示例 #
我們將使用示例資料庫中的 employees 表進行演示。

以下查詢使用 IS NULL 運算子來查詢沒有電話號碼的員工
SELECT
first_name,
last_name,
phone_number
FROM
employees
WHERE
phone_number IS NULL;Code language: SQL (Structured Query Language) (sql) first_name | last_name | phone_number
------------+------------+--------------
John | Russell | NULL
Karen | Partners | NULL
Jonathon | Taylor | NULL
Jack | Livingston | NULL
Kimberely | Grant | NULL
Charles | Johnson | NULLCode language: SQL (Structured Query Language) (sql)要查詢所有有電話號碼的員工,您可以使用 IS NOT NULL 運算子,如下所示
SELECT
first_name,
last_name,
phone_number
FROM
employees
WHERE
phone_number IS NOT NULL;Code language: SQL (Structured Query Language) (sql)輸出
first_name | last_name | phone_number
-------------+-------------+--------------
Steven | King | 515.123.4567
Neena | Kochhar | 515.123.4568
Lex | De Haan | 515.123.4569
Alexander | Hunold | 590.423.4567
Bruce | Ernst | 590.423.4568
...Code language: SQL (Structured Query Language) (sql)摘要 #
NULL代表資料庫中未知或缺失的資料。- 使用
IS NULL檢查一個值是否為NULL。 - 使用
IS NOT NULL運算子對IS NULL運算子取反。
資料庫 #
- PostgreSQL IS NULL 運算子
- Oracle IS NULL 運算子
- SQL Server IS NULL 運算子
- MySQL IS NULL 運算子
- SQLite IS NULL 運算子
- MariaDB IS NULL 運算子
本教程是否有幫助?