1. 程式人生 > 其它 >記Mysql型別引起的BUG

記Mysql型別引起的BUG

今天在專案裡發現了個好玩的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