Postgresql 仅当Postgres枚举存在时才选择它
说明如何检查Postgres中是否存在类型。我试着这样使用它:Postgresql 仅当Postgres枚举存在时才选择它,postgresql,Postgresql,说明如何检查Postgres中是否存在类型。我试着这样使用它: select case when exists (select 1 from pg_type where typname = 'my_type') then unnest(enum_range(NULL::my_type)) else null end 不幸的是,Postgres并不懒惰,因此当类型不存在时,这会给我一个类型错误。如何执行此操作?如果您只想枚举某个类型的值,可以从pg_enum获取,无需类型转换: SELECT
select
case when exists (select 1 from pg_type where typname = 'my_type')
then unnest(enum_range(NULL::my_type))
else null
end
不幸的是,Postgres并不懒惰,因此当类型不存在时,这会给我一个类型错误。如何执行此操作?如果您只想枚举某个类型的值,可以从
pg_enum
获取,无需类型转换:
SELECT
T.typname,
E.enumlabel,
E.enumsortorder
FROM
pg_enum E
INNER JOIN pg_type T ON (E.enumtypid = T.oid)
WHERE
T.typname = 'my_type'
;
如果您只想枚举某个类型的值,则可以从
pg_enum
中获取,而无需类型转换:
SELECT
T.typname,
E.enumlabel,
E.enumsortorder
FROM
pg_enum E
INNER JOIN pg_type T ON (E.enumtypid = T.oid)
WHERE
T.typname = 'my_type'
;