mysql隐式转换造成的查询结果不正确案例

时间:2022-07-22
本文章向大家介绍mysql隐式转换造成的查询结果不正确案例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

突然有个开发的朋友告诉我他用引号查询数据的结果和不带引号的不一致那么导致这问题的原因是什么呢。

不带引号查询结果为两条,带了引号为1条记录

首先查看表结构发现表的字段类型为varchar。

查询sql大概是这样

select c1,c2,c3 from table1 where c2=1284769464291737600

众所周知varchar不带引号的查询会产生隐式转换,根据这个线索查找官方文档

大概意思是超过2的53次放的整数不能被精确表示。会转换为float并且四舍五入

https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html

避免类似情况发生就需要指定合理的开发规范,并对sql进行审核杜绝隐式转换。