关注此question我想知道是否有优雅的方式对 int 值做同样的事情。
更准确地说,给定一个具有固定数量值(不一定连续)的整数列,我将如何将每个数字映射到每个枚举值。当我说 map 时,我的意思是迁移
例如: 让我们假设枚举是 as
CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy');
我们想映射:
0 -> 'sad'
1 -> 'ok'
10 -> 'happy'
比方说,我们有一个表,其中包含一个名为 mood 的列,其值仅为 {0,1,10}。
此外,我看不到答案 here帮助我。
我使用 Postgres 9.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;
关于postgresql - 将 int 列升级为 postgresql 中的枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316035/