我已将此值存储到mysql“1e-06”中的列中(以float类型存储)
当我使用“0.000001”搜索此值时,我没有匹配。有什么想法吗?
SELECT *
FROM `MATCH__DESTINATION`
WHERE `W_m` = 0.000001
答案 0 :(得分:0)
如果不在[t] eger中,则MySQL不会检测到相等的浮点数,左
浮动alwa [y] s大于右浮动es。 1.1> 1.1 =真。
mysql> SELECT * FROM float_bug WHERE f=1.1; Empty set (0.00 sec)
这是浮点运算的不精确性。使用
DECIMAL
类型 代替。
答案 1 :(得分:0)
尝试将匹配的列和值限制为等于小数精度,然后进行比较。
SELECT *
FROM `MATCH__DESTINATION`
WHERE Cast(`W_m` as Decimal(6,6)) = Cast(0.000001 as Decimal(6,6))
答案 2 :(得分:0)
你在做什么没有问题。 SELECT没有返回任何结果的唯一原因是因为没有匹配。有几件事:
列W_m
是否允许浮动值最多6个小数位?
您确定表中确实存在这样的值吗?您是否可以尝试使用任何其他WHERE谓词来获取具有W_m
为1e-06的相同记录?如果没有,是否可以在没有WHERE条件的情况下执行SELECT *
,然后手动检查该记录是否确实存在?