MySQL decimal类型+IN查询异常:为何非目标数据被检出?
1.问题:同事说他在mysql数据库上查询一张单表,条件字段用in的形式限定查询范围,字段为decimal类型,查询出来的数据会莫名出现一些不在范围内的数据。
2.分析排查:这一点也让我很纳闷,前往同事工位,先看下具体的语句是怎么写的。
实际情况不予展示,形如有一张表如table,字段column_field类型为decimal,查询语句行如select column_field from table where column_field in ('123','658','584');查出来的结果会有如789的数据。
3.处理解决:column_field类型为decimal,条件写成字符串的形式会出现column_field字段被隐式转换成字符串,出现一些奇怪的数据,建议按数字形式写法,防止自动转换,如下写法后正常select column_field from table where column_field in (123,658,584);