1

あるサーバーで 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;

別のサーバー (Web ホスティング) で 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 に答える