2016-03-04 24 views
1

我有下列數據的表:爲什麼SELECT * FROM表WHERE值!='1'不能返回帶NULL的字段?

id | value 
1 | 1 
2 | NULL 
3 | NULL 

我的查詢:

SELECT * FROM table WHERE value != '1' 

結果爲空。

爲什麼查詢不返回行23

+1

NULL等於什麼都沒有,甚至沒有自己。 –

+0

[SQL Fiddle](http://sqlfiddle.com/#!9/b5718/2/0)2和3在這個例子中沒有被返回...當我進行比較時,我的理解爲NULL將總是計算爲false除非null使用null邏輯評估 – xQbert

回答

6

value等於NULL謂詞變成:NULL != '1'。正如人們所期望的那樣,它評估爲NULL,而不是true

這是SQL的所謂的three valued logic:表達式計算結果爲true或false,NULL

要正確覈對NULL你需要使用IS NULL

WHERE (value != '1') OR (value IS NULL) 
相關問題