2013-12-13 4 views
0

У меня есть столбец типа int со всеми значениями от 0 до -5.PostgreSQL, Replace by Enum

Возможно ли сделать в запросе некоторое «перечисление», что вместо целочисленного значения я получаю в результате текст «ZERO, ONE, TWO, THREE, FOUR, FIVE» на основе значений 0, -1, -2, - 3, -4 и -5, без добавления функций на сервер PostgreSQL и без изменения данных в таблице.

Если сделать так, как должен выглядеть этот запрос.

ответ

1
select case the_column 
     when 0 then 'ZERO' 
     when -1 then 'ONE' 
     when -2 then 'TWO' 
     when -3 then 'THREE' 
     when -4 then 'FOUR' 
     when -5 then 'FIVE' 
     end as value_label 
from the_table 

SQLFiddle пример: http://sqlfiddle.com/#!15/48b69/1

выше будет возвращать null в случае, если любое другое значение хранится в the_column. Если вы этого не хотите, вам нужно добавить часть else в case, чтобы вернуть значение по умолчанию (например, unknown)

+0

Спасибо 'name', так как этот столбец между другими, и у меня есть существующий SELECT после удаления SELECT в перед CASE я получаю желаемый результат. Почему вы добавляете AS value_label? Для меня запрос работает без этого. –

+0

@ user973238: это просто, чтобы дать этому выражению собственное имя. Если вы можете жить с заголовком столбца '? Column? ', Это тоже хорошо. –

+0

Да, я могу использовать это через NET, где я предоставляю пользовательские имена столбцам в сетке данных. –