[SQL] 為何應該要使用 “IS NULL" 而不是 “= NULL"?

當我們想要找出某些欄位是 NULL 的資料…

做為資料工作者,在處理資料的時候經常會遇到所謂的空值「NULL」,也常看到這樣的值被存在資料庫的欄位中,當我們使用 SQL 想要找出某些欄位中是空值的資料,就會使用像下方這樣的 WHERE 去做篩選,但這樣其實無法得到我們想要的結果。

SELECT 
    column_1,
    column_2
FROM `my_table`
WHERE column_1 = NULL

NULL 值代表的其實是 Unknown

這是因為 NULL 在資料庫代表是 Unknown,任何的值在使用 Operator (像是 =, !=) 去跟 Unknown 做比較的時候也都會是 Unknown (也就是 Not True),所以結果一定都會回傳 False,導致我們的 Where 篩選無效。

正確用法是要使用 IS NULL / IS NOT NULL,所以上方的 SQL 可以改成

SELECT 
    column_1,
    column_2
FROM `my_table`
WHERE column_1 IS NULL

參考資料

發表留言