2013-12-13 20 views
0

我有int類型列,其中所有值都是從0到-5。PostgreSQL,用Enum替換

是否有可能在查詢中根據值0,-1,-2, - 而在結果文本「ZERO,ONE,TWO,THREE,FOUR,FIVE」中得到一些「枚舉」 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

上面將在情況下,任何其它值被存儲在the_column返回null。如果你不想這樣做,你需要添加一個else部分case返回一些默認值(例如unknown

+0

感謝'名稱',因爲此列之間的其他人,我有現有的SELECT後刪除SELECT CASE的前面我得到了想要的結果。爲什麼你把AS value_label?對於我沒有這個查詢工作。 –

+0

@ user973238:這只是給這個表達一個合適的名字。如果你可以和列標題'?column?'一起生活,那也不錯。 –

+0

是的,因爲我通過NET使用數據網格中的列給自定義名稱。 –