五等-統計資料處理大意108 年第 28 題單選題
在關聯式資料庫,如果想查詢欄位 NAME 不是 NULL 的紀錄,可以用下列那一個 SQL 子句?
AWHERE NAME ! NULL
BWHERE NAME!=NULL
CWHERE NAME NOT NULL
DWHERE NAME IS NOT NULL正確答案
D正確答案
SQL 判斷 NULL 必須用 IS NULL 或 IS NOT NULL,不能用 = 或 !=。
為什麼答案是 D
IS NOT NULL 是 SQL 標準判斷「欄位有值」的唯一正確寫法,IS NULL 則用於判斷為空值。
載入中…
完整詳解
Pro · 無限重點 SQL 判斷 NULL 必須用 IS NULL 或 IS NOT NULL,不能用 = 或 !=。
看到 NULL 就想到 IS / IS NOT,其他比較運算子一律刷掉。
逐選項分析
A✕
SQL 沒有單獨的「!」運算子,語法直接錯誤,無法執行。
B✕ 陷阱
!= 是「不等於」,但 NULL 代表未知值,任何與 NULL 的比較結果都是 UNKNOWN,不會回傳任何資料,這是最常見陷阱。
C✕
缺少 IS,語法不合 SQL 標準。正確寫法必須是 IS NOT NULL。
D✓ 正確
IS NOT NULL 是 SQL 標準判斷「欄位有值」的唯一正確寫法,IS NULL 則用於判斷為空值。
SQL NULL 判斷語法對照
| 需求 | 正確寫法 | 錯誤寫法 | 原因 |
|---|
| 欄位為 NULL | WHERE x IS NULL | WHERE x = NULL | NULL 無法用 = 比較 |
| 欄位非 NULL | WHERE x IS NOT NULL | WHERE x != NULL | 結果永遠為 UNKNOWN |
| 一般值比較 | WHERE x = 'A' | WHERE x IS 'A' | IS 只能搭配 NULL |
考生常以為 != NULL 就是「不是 NULL」,但 SQL 中 NULL 代表「未知」,任何運算子比較 NULL 結果都是 UNKNOWN,等同被 WHERE 過濾掉。判斷 NULL 必須使用專屬的 IS / IS NOT。