问题描述:
表A中RechargeAmount字段为float(10,2)类型,当根据此字段的值进行精确查询时,按照平常习惯使用SQL语句为:
SELECT * FROM `T_OMC_COMPANY_RECHARGE` where RechargeAmount = 20000.12;
但查询的结果为空(但数据库中是有此值的)。
但当查询值没有小数时,可以查出记录,如:where RechargeAmount = 20000;
解决办法:
根据在网上查找结果,可有两种方法解决此问题:
1、mysql float类型有小数位的话查询不能用‘=’匹配, double类型就没问题,但用like是可以的,结果如下:
SELECT * FROM `T_OMC_COMPANY_RECHARGE` where RechargeAmount like 20000.12;
2、使用format()函数,结果如下:
SELECT * FROM `T_OMC_COMPANY_RECHARGE` where format(RechargeAmount,2) = format( 20000.12,2);