在 SQL 查詢語言中 NULL 被用來表示資料庫中不存在的值,即「沒有數值」或是「未定義值」。根據維基百科上的說法,這是由關聯式資料庫模型的創建者 E.F. Codd 所引入,而在資料庫理論(Database Theory)中,則以 \( \omega \) 來表示空值。
由於 NULL 被表示為「沒有數值」或是「未定義值」,因此在查詢中無法使用比較運算元 =、>、< 及 <> 來判斷,比如當使用如下的 SQL 查詢語句試圖撈取資料庫中某一欄為 NULL 的資料列時,會返回空的結果集合:
SELECT name, gender, address
FROM users
WHERE address = NULL;
不論是
NULL = NULL 還是 NULL <> NULL 都會返回 False 值。
那麼該如何在資料庫中判斷一個欄位是否為 NULL 值呢?
實際上關聯式資料庫如 MySQL、Postgres、Microsoft SQL Server 等,都提供了 IS NULL 和 IS NOT NULL 條件判斷式以供判斷欄位是否為 NULL 又或是不為 NULL:
-- 判斷 address 欄位是否為 NULL
SELECT name, gender, address
FROM users
WHERE address IS NULL;
-- 判斷 address 欄位是否不為 NULL
SELECT name, gender, address
FROM users
WHERE address IS NOT NULL;
值得一提的是
IS NULL 條件式的語意相當於等於條件式,因此能夠有效地使用索引(index)來快速定位與查詢;而IS NOT NULL 條件式的語意相當於不等於條件式,在查詢時資料庫並不會使用索引(index),此時的索引是失效的。

張貼留言