Mysql中關於0值判斷的坑怎麼解決

PHPz
發布: 2023-05-29 12:01:26
轉載
1387 人瀏覽過

    Mysql關於0值判斷的坑

    最近遇到一個Mysql回傳多值的問題,最後發現是mysql過濾條件中0值判斷的問題。

    簡練問題如下

    有個INT欄位a,預設值為0,程式傳入的判斷條件是 a = 'abacd'。

    傳入的是一個字串,結果a=0的所有資料都回傳了。

    原因

    mysql會在邏輯判斷時,如果是整數判斷,但是傳入的是字串,如果字串不是數字,則字串會轉換為0。所以,

    這段程式碼實際判斷的條件是 a = 0。

    解決方式

    當在MySQL中進行邏輯判斷時,應該確保傳入值與欄位類型一致,即整數的欄位應該判斷整數,字串欄位應該判斷字串。在必須進行跨類型判斷的情況下,為避免陷入困境,需要根據業務邏輯進行適當的調整。

    問題引申

    如果字段a是否varchar類型,值為0,那麼判斷時應該用a='0'判斷,而不是a = 0 判斷,原因與上面的原因一致,字串會被轉換為0,結果最終判斷的是0 = 0。

    Mysql判斷數值0誤區總結

    在MySQL中,當資料表欄位為int型別時,可以判斷該欄位是否為0,不會出現問題。若為char或varchar型別時,則需使用'0',顯而易見,字串和整數是不能等同的。所以不要 犯這麼低級的錯誤。

    以下是從網路上搜尋到的mysql搜尋的原理:

    #mysql會把欄位的值先轉成整數,然後再比較。

    如果欄位的第一位是字串,那麼轉成整數就是0了,

    一般對字串的搜尋都要加上引號。

    以上是Mysql中關於0值判斷的坑怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:yisu.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板