我遇到了一些我無法弄清楚的SQL查詢的問題。不等於<>查詢排除空值
SELECT * FROM MasterList WHERE Requested <> "Yes";
如果我在我的表上運行上述查詢,我得到60個記錄返回。然而,應該接近300.我認爲問題是,有些記錄在請求字段中只是空白,而其他的則是空的。但我會認爲NULL仍然算不等於「是」不會嗎?如果沒有,是否有辦法解決這個問題,而不必返回並將所有空字段「空白」?
我遇到了一些我無法弄清楚的SQL查詢的問題。不等於<>查詢排除空值
SELECT * FROM MasterList WHERE Requested <> "Yes";
如果我在我的表上運行上述查詢,我得到60個記錄返回。然而,應該接近300.我認爲問題是,有些記錄在請求字段中只是空白,而其他的則是空的。但我會認爲NULL仍然算不等於「是」不會嗎?如果沒有,是否有辦法解決這個問題,而不必返回並將所有空字段「空白」?
空值不相比較計算,如果要返回null
值,則需要執行以下查詢:
SELECT * FROM MasterList WHERE Requested <> "Yes" OR Requested IS NULL;
這是因爲null <> 'Yes'
表達式求null
,因此,你應該添加一個單獨的is null
檢查包括在結果集中滿足此條件的記錄:
select * from MasterList where Requested <> "Yes" or Requested is null
PS:的null
任何東西相比,即使null
本身,總是會返回null
。
<=>
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"
感謝您的。我可以以佔NULL的方式構建我的查詢。 –