1
我有下列數據的表:爲什麼SELECT * FROM表WHERE值!='1'不能返回帶NULL的字段?
id | value
1 | 1
2 | NULL
3 | NULL
我的查詢:
SELECT * FROM table WHERE value != '1'
結果爲空。
爲什麼查詢不返回行2
和3
?
我有下列數據的表:爲什麼SELECT * FROM表WHERE值!='1'不能返回帶NULL的字段?
id | value
1 | 1
2 | NULL
3 | NULL
我的查詢:
SELECT * FROM table WHERE value != '1'
結果爲空。
爲什麼查詢不返回行2
和3
?
當value
等於NULL
謂詞變成:NULL != '1'
。正如人們所期望的那樣,它評估爲NULL
,而不是true
。
這是SQL的所謂的three valued logic:表達式計算結果爲true或false,或NULL
。
要正確覈對NULL
你需要使用IS NULL
:
WHERE (value != '1') OR (value IS NULL)
NULL等於什麼都沒有,甚至沒有自己。 –
[SQL Fiddle](http://sqlfiddle.com/#!9/b5718/2/0)2和3在這個例子中沒有被返回...當我進行比較時,我的理解爲NULL將總是計算爲false除非null使用null邏輯評估 – xQbert