Stan Blog

學習過程中的一些記錄

[SQL] 為什麼是 IS NULL 不是 = NULL

在 SQL 裡

SELECT * FROM SOME_TABLE
WHERE SOME_COLUMN = NULL

SELECT * FROM SOME_TABLE
WHERE SOME_COLUMN IS NULL

結果是不同的,因為

在 SQL 裡,NULL 代表 unknown


測試:

// 1 = 1 為 true,將 return 值

SELECT * FROM SOME_TABLE
WHERE 1 = 1

// 1 = 0 為 false,不 return 值

SELECT * FROM SOME_TABLE
WHERE 1 = 0

// 1 與 unknown 無法比較,不 return 值

SELECT * FROM SOME_TABLE
WHERE 1 = NULL

接著用 WHERE NOT() 測試 1 = 11 = 01 = NULL 三組值,會發現 WHERE NOT(1 = 1)WHERE NOT(1 = 0) 與上面使用 WHERE 結果相反

WHERE NOT(1 = NULL) 一樣不 return 值

可知 1 = NULL 的結果不是 true 也不是 false

而是 NULL 或是 unknown


另外在 SQL 裡

空字串 不等於 NULL

  • 空字串 是沒有值的已知值
  • NULL 是未知值 (unknow)


Ref:

Comments

comments powered by Disqus