1. 程式人生 > 資料庫 >資料庫中null與''的小坑

資料庫中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