[工作日記-DeBug]SQL的Null比較

最近在處理某家銀行的系統,一直追某個Bug追到DB裡面的SP
因為裡面的條件邏輯實在太複雜了,所以我就一行一行的加上條件去追結果,結果發現一個有趣的雷(應該說是我自己也是看到才想起來的)
假設一個欄位是可Null的,那你Where條件應該要注意一個現象

那就是Null是不可以被比較的!!!
那就是Null是不可以被比較的!!!
那就是Null是不可以被比較的!!!

因為很重要所以要說三遍,舉個例子,有個Table長這樣


裡面的資料是這樣

好,問題來了,請問如果我下了Select * From Demo Where Account<>'0000'
會選到幾筆資料?
.
.
.
.
.
答案是0筆!



原因很簡單,因為Null不能被比較,所以當條件有可能是Null時,請記得一定要加上Is Null或是Is Not Null

留言