小编典典

获取枚举可以具有的所有值的 SQL 查询

all

Postgresql 前段时间获得了枚举支持。

CREATE TYPE myenum AS ENUM (
'value1',
'value2',
);

如何通过查询获取枚举中指定的所有值?


阅读 118

收藏
2022-07-28

共1个答案

小编典典

如果你想要一个数组:

SELECT enum_range(NULL::myenum)

如果您想为枚举中的每个项目单独记录:

SELECT unnest(enum_range(NULL::myenum))

附加信息

即使您的枚举不在默认架构中,此解决方案也会按预期工作。例如,替换myenummyschema.myenum

上述查询中返回记录的数据类型将为myenum. 根据您的操作,您可能需要转换为文本。例如

SELECT unnest(enum_range(NULL::myenum))::text

如果要指定列名,可以附加AS my_col_name.


感谢 Justin Ohms 指出了一些额外的提示,我将这些提示纳入了我的回答中。

2022-07-28