您好,登錄后才能下訂單哦!
這篇文章主要介紹“Mysql中關(guān)于0值判斷的坑怎么解決”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Mysql中關(guān)于0值判斷的坑怎么解決”文章能幫助大家解決問題。
最近遇到一個Mysql返回多值的問題,最后發(fā)現(xiàn)是mysql過濾條件中0值判斷的問題。
有個INT字段a,默認值為0,程序傳入的判斷條件是 a = 'abacd'。
傳入的是一個字符串,結(jié)果a=0的所有數(shù)據(jù)都返回了。
mysql會在邏輯判斷時,如果是整型判斷,但是傳入的是字符串,如果字符串不是數(shù)字,則字符串會被轉(zhuǎn)換為0。所以,
這段代碼實際判斷的條件是 a = 0。
mysql中的邏輯判斷,判斷值的傳入,應(yīng)該與字段類型一致,整型判斷整型,字符串判斷字符串。如果避免不了,跨類型的判斷,那么就需要根據(jù)業(yè)務(wù)邏輯,進行調(diào)整,避免掉入這個坑。
如果字段a是否varchar類型,值為0,那么判斷時應(yīng)該用 a='0'判斷,而不是 a = 0 判斷,原因與上面的原因一致,字符串會被轉(zhuǎn)換為0,結(jié)果最終判斷的是 0 = 0。
mysql中判斷數(shù)據(jù)表字段是否為0,當前數(shù)據(jù)表字段為int類型時,沒有問題。若為char或者varchar類型時,則需要使用'0',顯而易見,字符串和整型是不能等同的。所以不要 犯這么低級的錯誤。
以下是從網(wǎng)上搜索到的mysql搜索的原理:
mysql會把字段的值先轉(zhuǎn)成整數(shù),然后再對比。
如果字段的第一位是字符串,那么轉(zhuǎn)成整數(shù)就是0了,
一般對字符串的搜索都要加上引號。
關(guān)于“Mysql中關(guān)于0值判斷的坑怎么解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。