2009-07-31 10 views
1

私はmysqlバージョン5.0.45を使用しています。次のクエリを実行すると、boolvalue = 'True'と2.2 elseがあれば1を返します。mysql caseが間違った値を返す

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 

私はエラーがどこにあるかを示すためにそれを壊し、クエリはまた、いくつかの他のものがそうであるようにサブクエリを使用する必要があります。誰かが私にこれを説明することができますか?

答えて

1

floating pointエラーである可能性があります。番号の前にROUND()を貼り付けて問題を解決してください。

0

これは単なるバグかもしれません。結局のところ、5.0.22は非常に古いです。ところで、あなたは、単に使用していても

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

またはASあなたのケースを簡素化することができるはずIF()

SELECT IF(table.boolvalue='True', 1, 2.2) AS value FROM table 
関連する問題