小墨の博客

梦想需要付诸行动,否则只能是梦

MySQL 查询时,会自动将不同类型转换成相同类型然后比较,不会报错【坑!】

问题原因:MySQL会强行将字符串转成数字(比如 '1axxxx'这个字符串在进行 in (1,2) 查询时,字符串会转成数字1,然后比较,于是这条记录就被查出来了)

解决方案:查询时WHERE条件与字段类型保持一致


SELECT * FROM test_table WHERE `test_column` IN (1,2)

结果:

1

1

2

1a960e34617f4a9f977f1ac8ad4d7c88.png

2

1f62dccdc9e84e1995abe1a89dfe3338.png


SELECT * FROM test_table WHERE `test_column` IN ('1','2')

结果:

1

1

2

2


问题原因:MySQL会强行将字符串转成数字

SELECT 
  cast( '1a960e34617f4a9f977f1ac8ad4d7c88.png' AS SIGNED ),
  cast( 'a1960e34617f4a9f977f1ac8ad4d7c88.png' AS SIGNED )

结果:

1    0


张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:508
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:61
    • 浏览总数:225323

    | | |
    | |  Z-Blog PHP