在數據庫設計中字段儘可能不要默認容許爲NULL,由於NUll這個值太特殊了,最近在一個項目中再次掉如這個坑中。
簡單描述一下咱們遇到的問題:
數據表A的字段a類型爲varchar,默認容許NULL,而後在程序中有一個業務需求的SQL語句是這個 SELECT * FROM A WHERE a != 'something'
,
本來期待的是這個SQL語句會按照咱們指望的結果執行,查詢出全部a不等於something的執行,而後實際上並非如此。該SQL語句只查詢出了a不能與NULL且不等於something的數據。後來查詢才明白,由於NULL和任何其餘值比較都是FALSE數據庫