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

  • 相关阅读:
    c语言学习笔记(6)——for和while循环
    c语言学习笔记(5)——进制
    c语言学习笔记(4)——流程控制
    ckeditor复制粘贴word
    java上传超大文件
    plupload上传整个文件夹
    vue+上传文件夹
    php+上传大文件
    web+文件夹上传
    2G以上的大文件如何上传
  • 原文地址:https://www.cnblogs.com/javalinux/p/15294502.html
Copyright © 2011-2022 走看看