SQL - where條件里的!=會過濾值為null的數據


!=會過濾值為null的數據

在測試數據時忽然發現,使用如下的SQL是無法查詢到對應column為null的數據的:

select * from test where name != 'Lewis';

本意是想把表里name的值不為Lewis的所有數據都搜索出來,結果發現這樣寫無法把name的值為null的數據也包括進來。

上面的!=換成<>也是一樣的結果,這可能是因為在數據庫里null是一個特殊值,有自己的判斷標准,如果想要把null的數據也一起搜索出來,需要額外加上條件,如下:

select * from test where name != 'Lewis' or name is null;

雖然這只是個小知識點,不過還是值得記錄注意下,以免日后在開發中犯小錯誤。

null值的比較

這里另外說下SQL里null值的比較,任何與null值的比較結果,最后都會變成null,以PostgreSQL為例,如下:

select null != null;
select null = null;
select null > 1;
select null <> 1;

以上結果都是null,而不是什么true或者false。另外有些函數是不支持null值作為輸入參數的,比如count()或者sum()等。

參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM