MySQL CASE EnumInt КОГДА Varchar ELSE Int возвращается как BLOB - Как разыграть как Varchar? - PullRequest
3 голосов
/ 20 октября 2011

Следующее возвращает BLOB, как я могу преобразовать это другое значение в VARCHAR, чтобы исправить мою проблему?

SELECT
    CASE EnumID
        WHEN 1 THEN 'Red'
        WHEN 2 THEN 'Green'
        WHEN 3 THEN 'Blue'
        ELSE EnumID
    END AS EnumValue
FROM Table

В MSSQL / TSQL я использую ELSE CAST([EnumID] AS VARCHAR(100)), но MySQL жалуется.

Все, что мне нужно, - это переключение при сбое, если эта хранимая процедура не знает нового значения перечисления для управления кодом по сравнению с основной базой данных и сохранением данных хранилища данных.

Обязан быть очевидным ответом ...


Видимо проблема, кажется, в использовании VARCHAR? Просто обнаружил, что CAST(EnumID AS CHAR(20)) отлично работает в переключателе корпуса.

Вздох ... зачем мне писать все, что мне нужно, это резиновая утка, с которой можно поговорить ...

1 Ответ

5 голосов
/ 20 октября 2011

Использование cast

SELECT 
    CAST(CASE EnumID 
        WHEN 1 THEN 'Red' 
        WHEN 2 THEN 'Green' 
        WHEN 3 THEN 'Blue' 
        ELSE EnumID 
    END AS VARCHAR(20)) AS EnumValue
FROM `Table` 

См .: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

...