NULL 值 (SQL NULL Values)
在 SQL 中,NULL 代表一個欄位沒有任何值,它跟空字串 '' 或數字 0 不同,NULL 代表的是「未知」或「沒有資料」。
當資料表中某欄位是選填的 (optional),若在新增或更新資料時沒有給定該欄位值,該欄位就會以 NULL 值保存。
測試 NULL 值
由於 NULL 是一種特殊值,我們無法使用比較運算子 (如 =、<、> 或 <>) 來測試 NULL 值,而必須使用 IS NULL 與 IS 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_Id | Name | City | Phone |
|---|---|---|---|
| 1 | 張一 | 台北 | 02-12345678 |
| 2 | 王二 | NULL | NULL |
| 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;
查詢結果:
| Name | City |
|---|---|
| 張一 | 台北 |
| 李三 | 高雄 |
常見錯誤
以下寫法是錯誤的,無法正確判斷 NULL 值:
-- 錯誤寫法
SELECT * FROM customers WHERE Phone = NULL;
SELECT * FROM customers WHERE Phone <> NULL;
務必使用 IS NULL 或 IS NOT NULL 來判斷。