2015-09-04 32 views
3
table 'materials' 
id sku content 
10 IT2 Iron 
11 IT3 Steel 
12 IT4 Steel 
13 IT5 NULL 
14 IT6 Iron 
15 IT7 Glass 

select id, sku, content from materials where content !='Iron'; 

返回結果:SQL凡不等於不返回NULL結果

id sku content 
11 IT3 Steel 
12 IT4 Steel 
15 IT7 Glass 

爲什麼編號13的結果,不返回NULL值設置?使用MYSQL。

+1

你可以....'那裏COALESCE(內容, 'HandleNull')!='Iron''合併會第一非空值,但是在這種情況下'HandleNull'變成特殊邊緣情況;如果有任何內容值等於'HandleNull',那麼你就不會得到這些內容。 – xQbert

+0

xQbert - 這也很完美。我看到handleNull是一個佔位符,可以是任何你知道不會成爲可能的結果的東西。它是否將所有的NULL變成0? – Kevin

+0

coalesce從一系列值中返回第一個非空值。所以在這種情況下,如果content爲null,它將返回'HandleNull',這可能不會等於你的可能結果。然而,如果內容有一個值,它將簡單地將該值與!='Iron'進行比較,但並不能真正將它們變爲0.我無法找到mySQL如何處理空集',它可能同樣適用。 – xQbert

回答

6

根據您的where子句,它將比較null != 'Iron',其計算結果爲UNKNOWN,基於SQL的3路邏輯,它既不是真也不是假。因此它不會被查詢返回。

如果您需要null一行時將產生,你應該使用

where content !='Iron' or content is null