Mysql Case возвращает неправильное значение - PullRequest
1 голос
/ 31 июля 2009

На одном сервере я использую mysql версии 5.0.45, и при выполнении следующего запроса он возвращает 1, если boolvalue = 'True' И еще 2.2, как и положено.

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

Мне нужно использовать подзапрос, так как запрос также выполняет некоторые другие вещи, просто разбил его, чтобы показать вам, где ошибка. Пожалуйста, кто-нибудь может мне это объяснить?

Ответы [ 2 ]

1 голос
/ 31 июля 2009

Это может быть ошибка с плавающей запятой . Попробуйте поставить ROUND () перед своим номером, чтобы решить проблему

0 голосов
/ 01 августа 2009

Это может быть просто ошибка. 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...