黄东旭解析 TiDB 的核心优势
922
2023-07-05
Mysql中关于0值判断的坑怎么解决
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了,
一般对字符串的搜索都要加上引号。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。