2017-02-09 29 views
0

我遇到了一些我無法弄清楚的SQL查詢的問題。不等於<>查詢排除空值

SELECT * FROM MasterList WHERE Requested <> "Yes"; 

如果我在我的表上運行上述查詢,我​​得到60個記錄返回。然而,應該接近300.我認爲問題是,有些記錄在請求字段中只是空白,而其他的則是空的。但我會認爲NULL仍然算不等於「是」不會嗎?如果沒有,是否有辦法解決這個問題,而不必返回並將所有空字段「空白」?

回答

0

空值不相比較計算,如果要返回null值,則需要執行以下查詢:

SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL; 
+0

感謝您的。我可以以佔NULL的方式構建我的查詢。 –

0

這是因爲null <> 'Yes'表達式求null,因此,你應該添加一個單獨的is null檢查包括在結果集中滿足此條件的記錄:

select * from MasterList where Requested <> "Yes" or Requested is null 

PS:的null任何東西相比,即使null本身,總是會返回null

2

<=>
NULL安全等。該運算符與=運算符執行相等比較,但如果兩個操作數均爲NULL,則返回1而不是NULL;如果一個操作數爲NULL,則返回0而不是NULL。

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; 
    -> 1, 1, 0 
mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL; 
    -> 1, NULL, NULL 
你的情況使用

SELECT * FROM MasterList WHERE not Requested <=> "Yes"