數據庫中null與''的小坑

這個小坑是昨天遇到的,是一個很粗心的問題,按道理說根本不應該出現。

數據庫默認是null,所以有個SQL語句查找地址爲空的數據,就寫成了 and address is null。然後過測試同學,測試直接把地址刪掉清空了,沒展示出來他就以爲功能出問題了,但是我們都知道null != ‘’ ;然後就改唄,神仙改法 加了個 or ,and address is null or address = ‘’; 一下子數據亂了,加了個or,相當於類似注入那種永真條件。前面一大串的and根本不看了,直接判斷最後那一串 or address = ‘’ ;

正確操作應該是 :

update XXXTable set address=null where userid = 11111;
測試應該這樣設置爲空,同時SQL優化有一點也是說盡量默認值別用null,用空串代替null。每個列設置一下not null。
還有就是is not null 在某些版本的mysql不走索引,所以建議以後直接用‘’ 或者 0 來代替默認的null
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章