MySQL 5.7 查询varchar类型字段的时候,使用number当参数,会出现的隐式转换产生的问题

隐式转换,官网解释:https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html

例如我数据表中有一个varchar类型的 IR_HKEY 字段,数据如下:
在这里插入图片描述

现在我要通过这个字段去做查询,查询条件为number类型。将会遇见以下错误情况:

1.查询到错误的数据
图4

2.表里有数据但是查询不到
这一条暂时无法重现,我之前遇到过。

3.同时查询到正确与错误的数据
在这里插入图片描述

4.正确查询到数据(但是这只是巧合)
不重现了这个就

可能还会出现其他情况,官网我并没有读完。造成这种错误的原因就是 where 查询条件等式的左边是varchar类型,右边是number类型,类型不匹配,因此mysql做了一次隐式转换。转换规则官网/百度有很多介绍了,文中例子的重点就是等式两边会都换算成浮点型再比对,超过2^53的数在换算过程中会丢精度,因此出现查询错误

其中问题1的答疑,我看到有别的博主贴了个官方的截图,但是我并没有从官网找到,截图如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值