Mysql Case返回错误的值

时间:2009-07-31 14:03:39

标签: mysql select subquery

在一台服务器上,我使用mysql版本5.0.45,当运行以下查询时,如果boolvalue ='True',则返回1,其他2.2,就像它应该的那样。

SELECT Q.value
FROM (
SELECT (CASE table.boolvalue='True' WHEN 1 THEN 1 ELSE 2.2 END) AS value FROM table
) Q;

在另一台服务器上(webhosting)我使用mysql版本5.0.22,当运行相同的查询时,它总是返回0.9999,为什么?!

但是使用这个查询它会返回结果:

SELECT (CASE table.boolvalue='True' WHEN 1 THEN 1 ELSE 2.2 END) AS value FROM table

我需要使用子查询,因为查询还会执行其他一些操作,只需将其分解以显示错误的位置。请有人向我解释一下吗?

2 个答案:

答案 0 :(得分:1)

可能是floating point错误。尝试在您的号码前贴上ROUND()来解决问题

答案 1 :(得分:0)

这可能只是一个错误。毕竟5.0.22很老了。顺便说一下,您应该能够简化CASE

SELECT (CASE WHEN table.boolvalue='True' THEN 1 ELSE 2.2 END) AS value FROM table

甚至只是使用IF()

SELECT IF(table.boolvalue='True', 1, 2.2) AS value FROM table