在一台服务器上,我使用 mysql 版本 5.0.45,当运行以下查询时,如果 boolvalue='True' AND 2.2,它返回 1,正如它应该的那样。
SELECT Q.value
FROM (
SELECT (CASE table.boolvalue='True' WHEN 1 THEN 1 ELSE 2.2 END) AS value FROM table
) Q;
在另一台服务器(虚拟主机)上,我使用 mysql 版本 5.0.22,当运行相同的查询时,它总是返回 0.9999,为什么?!
但是使用这个查询它会返回它应该返回的结果:
SELECT (CASE table.boolvalue='True' WHEN 1 THEN 1 ELSE 2.2 END) AS value FROM table
我需要使用子查询,因为该查询还执行一些其他操作,只是将其分解以显示错误所在。有人可以向我解释一下吗?
最佳答案
它可能是一个 floating point错误。试试贴ROUND()在您的号码前解决问题
关于Mysql Case 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1212715/