欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中關(guān)于0值判斷的坑及解決

 更新時(shí)間:2022年08月29日 17:07:12   作者:白菜大叔  
這篇文章主要介紹了Mysql中關(guān)于0值判斷的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Mysql關(guān)于0值判斷的坑

最近遇到一個(gè)Mysql返回多值的問題,最后發(fā)現(xiàn)是mysql過濾條件中0值判斷的問題。

簡(jiǎn)練問題如下

有個(gè)INT字段a,默認(rèn)值為0,程序傳入的判斷條件是 a = 'abacd'。

傳入的是一個(gè)字符串,結(jié)果a=0的所有數(shù)據(jù)都返回了。

原因

mysql會(huì)在邏輯判斷時(shí),如果是整型判斷,但是傳入的是字符串,如果字符串不是數(shù)字,則字符串會(huì)被轉(zhuǎn)換為0。所以,

這段代碼實(shí)際判斷的條件是 a = 0。

解決方式

mysql中的邏輯判斷,判斷值的傳入,應(yīng)該與字段類型一致,整型判斷整型,字符串判斷字符串。如果避免不了,跨類型的判斷,那么就需要根據(jù)業(yè)務(wù)邏輯,進(jìn)行調(diào)整,避免掉入這個(gè)坑。

問題引申

如果字段a是否varchar類型,值為0,那么判斷時(shí)應(yīng)該用 a='0'判斷,而不是 a = 0 判斷,原因與上面的原因一致,字符串會(huì)被轉(zhuǎn)換為0,結(jié)果最終判斷的是 0 = 0。

Mysql判斷數(shù)值0誤區(qū)總結(jié)

mysql中判斷數(shù)據(jù)表字段是否為0,當(dāng)前數(shù)據(jù)表字段為int類型時(shí),沒有問題。若為char或者varchar類型時(shí),則需要使用'0',顯而易見,字符串和整型是不能等同的。所以不要 犯這么低級(jí)的錯(cuò)誤。

以下是從網(wǎng)上搜索到的mysql搜索的原理:

mysql會(huì)把字段的值先轉(zhuǎn)成整數(shù),然后再對(duì)比。

如果字段的第一位是字符串,那么轉(zhuǎn)成整數(shù)就是0了,

一般對(duì)字符串的搜索都要加上引號(hào)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • mysql的事務(wù)隔離級(jí)別詳細(xì)解析

    mysql的事務(wù)隔離級(jí)別詳細(xì)解析

    這篇文章主要介紹了mysql的事務(wù)隔離級(jí)別詳細(xì)解析,事務(wù)是應(yīng)用程序中一系列嚴(yán)密的操作,所有操作必須成功完成,否則在每個(gè)操作中所作的所有更改都會(huì)被撤消,需要的朋友可以參考下
    2023-12-12
  • mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解

    mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解

    這篇文章主要介紹了mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • mysql id從1開始自增 快速解決id不連續(xù)的問題

    mysql id從1開始自增 快速解決id不連續(xù)的問題

    這篇文章主要介紹了mysql id從1開始自增 快速解決id不連續(xù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • MySQL中一條SQL查詢語句是如何執(zhí)行的

    MySQL中一條SQL查詢語句是如何執(zhí)行的

    在寫SQL查詢語句的時(shí)候,通常要考慮SQL語句的查詢效率,了解SQL查詢語句的執(zhí)行順序,可以讓我們寫出更好的SQL語句,下面這篇文章主要給大家介紹了關(guān)于MySQL中一條SQL查詢語句是如何執(zhí)行的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 最新評(píng)論