在这之后,我想知道是否有一种优雅的方式对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;