在这之后,我想知道是否有一种优雅的方式对int值做同样的事情。
更准确地说,给定一个具有固定数量值(不一定是连续的)的整数列,我将如何将每个数字映射到每个枚举值。当我说地图的时候我的意思是迁移
例如:
假设枚举question

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');

我们想绘制地图:
0 -> 'sad'
1 -> 'ok'
10 -> 'happy'

其中,假设我们有一个表,它包含一个名为mood的列,仅值为{0,1,10}。
而且,我看不出答案对我有帮助。
我用Postgres9.5

最佳答案

USING子句是告诉postgresql如何转换值的表达式。这是一个表达式,就像您在SELECT中使用的一样。因此,如果需要指定映射,那么可以使用CASE语句。

alter table foo
  alter bar type mood
  using
     case bar
        when 0 then 'sad'
        when 1 then 'ok'
        when 10 then 'happy'
     end :: mood;

09-28 05:17