同事問:如何查找某欄位為NULL並替換?直覺寫WHERE col = NULL,執行無錯但無結果;改WHERE LEN(col) = 0也無果。正確寫法:
SELECT * FROM table_name WHERE col IS NULL
= NULL 不工作?SQL遵循三值邏輯(True/False/Unknown)。NULL = NULL評估為Unknown,WHERE只保留True的行。IS NULL是專門判斷空值的述詞,回傳True/False。
col = NULL → 永遠Unknowncol <> NULL → 永遠UnknownLEN(col) = 0 → NULL傳入任何函數(除ISNULL/COALESCE外)結果仍為NULL,比較同樣失效-- 查詢並顯示替換值
SELECT ISNULL(col, 'replacement') FROM table_name
-- 實際更新
UPDATE table_name SET col = 'replacement' WHERE col IS NULL
口訣:判斷空值用IS NULL / IS NOT NULL,替換空值用ISNULL() / COALESCE(),永遠不要用= / <>比較NULL。