隐式转换,官网解释:https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
例如我数据表中有一个varchar类型的 IR_HKEY 字段,数据如下:
现在我要通过这个字段去做查询,查询条件为number类型。将会遇见以下错误情况:
1.查询到错误的数据
2.表里有数据但是查询不到
3.同时查询到正确与错误的数据
4.正确查询到数据(但是这只是巧合)
不重现了这个就
可能还会出现其他情况,官网我并没有读完。造成这种错误的原因就是 where 查询条件等式的左边是varchar类型,右边是number类型,类型不匹配,因此mysql做了一次隐式转换。转换规则官网/百度有很多介绍了,文中例子的重点就是等式两边会都换算成浮点型再比对,超过2^53的数在换算过程中会丢精度,因此出现查询错误。
其中问题1的答疑,我看到有别的博主贴了个官方的截图,但是我并没有从官网找到,截图如下: