【问题标题】:Mysql Case returns wrong valueMysql Case 返回错误值
【发布时间】:2009-07-31 14:03:39
【问题描述】:

在一台服务器上,我使用 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

我需要使用子查询,因为查询还做了其他一些事情,只是将其分解以显示错误在哪里。请问谁能给我解释一下?

【问题讨论】:

    标签: mysql select subquery


    【解决方案1】:

    可能是floating point 错误。尝试在您的号码前添加ROUND() 以解决问题

    【讨论】:

      【解决方案2】:

      这可能只是一个错误。毕竟 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-07
        • 1970-01-01
        • 2022-10-13
        • 2022-01-17
        • 2017-09-08
        • 2018-02-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多