1

在一台服务器上,我使用 mysql 版本 5.0.45 并在运行以下查询时返回 1 if boolvalue='True' AND 2.2 else,就像它应该的那样。

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

我需要使用子查询,因为查询还做了其他一些事情,只是将其分解以向您显示错误所在。请问有人可以向我解释一下吗?

4

2 回答 2

1

可能是浮点错误。尝试在您的号码前加上ROUND()来解决问题

于 2009-07-31T16:09:33.560 回答
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
于 2009-08-01T08:23:59.197 回答