記Mysql型別引起的BUG
阿新 • • 發佈:2021-09-16
今天在專案裡發現了個好玩的BUG,來記錄下。
首先:表資料是這樣的(專案裡的表就不展示了,隨意弄個臨時表)
由於a的預設值為空,同事就寫了這樣的sql
select * from t1 where a =0
和這樣的sql
select * from t1 where a>0
--------------------------------------------------
於是問題就出現了:
第一個sql結果如下:
沒錯,出來了2條記錄,接下來看另一個sql結果
反而只出來一條結果。。。。
至於原因嘛,很明顯是a型別引起的,
由於a是字串,where a=0 的成立條件就成了a 的值是'0',或者是非數字開頭的字串
where a >0 出來的資料的原因在於 字串a最左邊的數字是6
具體字串做比較的規則可以參考https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
解決辦法:把0改為'0'
所以資料庫的欄位型別務必檢視仔細,避免發生隱式型別轉換不走索引和造BUG
————————————————
版權宣告:本文為CSDN博主「牙疼疼疼疼疼」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/New_CJ/article/details/105869966