zoukankan      html  css  js  c++  java
  • 记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

  • 相关阅读:
    作为技术管理者,我如何保持技术判断力
    管理沟通
    管理规划
    nginx 在浏览器端保持cookie 一致
    openssl 升级操作 -2
    iptables 实际操作 之 规则查询 2
    iptables 概念 1
    openssl 升级 操作 -1
    使用秘钥对登录服务器
    SSH配置免秘钥登录
  • 原文地址:https://www.cnblogs.com/javalinux/p/15294502.html
Copyright © 2011-2022 走看看