营销型网站盈利方案,电商网站开发设计方案,网站开发系统计划书,wordpress 主题制作 视频前言
首先看下面的查询语种
select * from AudioKnowledgeChatInfo where AudioId297795550566600706;
查询结果如下 看到上面的查询结果#xff0c;是不是一脸懵#xff1f;这audioId明显不对啊#xff0c;怎么查询到了#xff1f;
原因剖析
首先我们来看看数据库表…前言
首先看下面的查询语种
select * from AudioKnowledgeChatInfo where AudioId297795550566600706;
查询结果如下 看到上面的查询结果是不是一脸懵这audioId明显不对啊怎么查询到了
原因剖析
首先我们来看看数据库表结构 可以看到表中AudioId定义是varchar(50)但是查询sql中传入的是数字很显然这可能是涉及到mysql的隐式类型转换问题了。我们知道mysql在进行字段查询的时候varchar和int,bigint的比较时会把varchar类型转换成对应的int或者bigint,这时可能会造成精度丢失比较不准确问题。
我们把上面的sql修改下
select * from AudioKnowledgeChatInfo where AudioId297795550566600706;
再次查询下发现查询不到数据了。
总结
mysql的类型隐式转换会导致索引失效问题、数据比对异常等问题所以在表结构设计以及sql编写的时候还是要多加注意避免这种错误。