PostgreSQL,由Enum替换

时间:2013-12-13 10:26:43

标签: postgresql

我有int类型列,所有值都从0到-5。

是否有可能在查询中使用“枚举”而不是整数值,而是根据值0,-1,-2,-3得到结果文本“ZERO,ONE,TWO,THREE,FOUR,FIVE” ,-4和-5,不向PostgreSQL服务器添加函数,也不更改表中的数据。

如果该查询应该如何。

1 个答案:

答案 0 :(得分: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