Postgresql 仅当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

说明如何检查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
   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'
 ;