Answers:
如果要数组:
SELECT enum_range(NULL::myenum)
如果要为枚举中的每个项目单独记录:
SELECT unnest(enum_range(NULL::myenum))
即使您的枚举不在默认架构中,此解决方案也会按预期工作。例如,更换myenum
用myschema.myenum
。
上述查询中返回记录的数据类型为myenum
。根据您的操作,可能需要转换为文本。例如
SELECT unnest(enum_range(NULL::myenum))::text
如果要指定列名称,则可以追加AS my_col_name
。
感谢Justin Ohms指出了一些其他技巧,这些技巧已纳入我的答案。
NULL::
?
SELECT enum_range(myenum)
呢?铸造是什么意思null
?
尝试:
SELECT e.enumlabel
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
WHERE t.typname = 'myenum'
ORDER BY e.enumsortorder
到查询。如果使用BEFORE
或将新值插入枚举类型,则枚举值很可能会乱序AFTER
。
SELECT unnest(enum_range(NULL::your_enum))::text AS your_column
这将返回枚举“ your_enum”的内容的单列结果集,该列结果集的文本类型为“ your_column”。
您可以使用以下查询获取枚举的所有枚举值。通过查询,您还可以选择枚举所在的名称空间(如果在多个名称空间中定义了枚举,则需要此名称空间;否则,可以省略查询的那一部分)。
SELECT enumlabel
FROM pg_enum
WHERE enumtypid=(SELECT typelem
FROM pg_type
WHERE typname='_myenum' AND
typnamespace=(SELECT oid
FROM pg_namespace
WHERE nspname='myschema'))