昨天遇到一个很奇葩的问题,数据库里有一张表,该表有个字段(就叫它test)是float类型,表里一共有4条测试数据,分别是43.6025、43.6025、43.6025、47.6025,使用select * from 表名 where test = 43.6025 ,查询出3条数据 ,使用select * from 表名 where test = 47.6025 却查询为空,改成其他数字,也查询不出来,唯独43.6025可以查询出结果。
一下子懵住了,一开始想是不是空格的问题,把数据删除,重新插入也还是查询不出来。上网查了,说可能是表损坏了,但是检查了表是没有问题的。把test字段改成double类型,就可以查询出结果,一旦改回来又查询不到。后来老大给建议查询时候加个去空格的要求,如select * from 表名 where trim(test) = 47.6025,终于查询出来了。
感觉应该是储存的格式有问题,导致有空格存入了。