NULL 值 (SQL NULL Values)

在 SQL 中,NULL 代表一個欄位沒有任何值,它跟空字串 '' 或數字 0 不同,NULL 代表的是「未知」或「沒有資料」。

當資料表中某欄位是選填的 (optional),若在新增或更新資料時沒有給定該欄位值,該欄位就會以 NULL 值保存。

測試 NULL 值

由於 NULL 是一種特殊值,我們無法使用比較運算子 (如 =<><>) 來測試 NULL 值,而必須使用 IS NULLIS NOT NULL 運算子。

IS NULL 語法

SELECT column_name(s)
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL 語法

SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;

IS NULL 用法範例 (Example)

假設我們有一個 customers 資料表:

C_IdNameCityPhone
1張一台北02-12345678
2王二NULLNULL
3李三高雄NULL

如果我們想查出沒有電話號碼的客戶:

SELECT Name FROM customers
WHERE Phone IS NULL;

查詢結果:

Name
王二
李三

IS NOT NULL 用法範例 (Example)

若我們想查出有填寫城市的客戶:

SELECT Name, City FROM customers
WHERE City IS NOT NULL;

查詢結果:

NameCity
張一台北
李三高雄

常見錯誤

以下寫法是錯誤的,無法正確判斷 NULL 值:

-- 錯誤寫法
SELECT * FROM customers WHERE Phone = NULL;
SELECT * FROM customers WHERE Phone <> NULL;

務必使用 IS NULLIS NOT NULL 來判斷。