我正在使用 SELECT 从数据库生成结果集:
SELECT id countryname FROM dataset
其中 -countryname- 存储为 varchar。
我打算在此过程中将 -countryname- 转换为其等效的枚举类型,而不必首先运行标准声明语句:
CREATE TYPE countries AS ENUM ('US', 'France', 'S. Korea')
原因是,为了做出这样的声明,我需要所有可能的国家的列表。但我不容易获得此列表,必须首先通过查找 -countryname- 变量的不同值来获得。因此,必须添加这一行额外的声明似乎很笨拙且不必要。在我看来,PostgreSQL 有一个用于执行此操作的函数是合适的。
换句话说,我正在寻找类似于 C 中的
countryname.Parse()
方法(我猜?),或者 Pandas 中的 countryname.astype('category')
方法,一步完成声明和转换,例如:
SELECT id CONVERTION_FUNCTION(countryname) FROM dataset
with data(s) as (
select 'US' union all
select 'France' union all
select 'S. Korea'
)
select s::countries from data;
如果您传递的字符串不是枚举的一部分,您将获得:
错误:枚举国家/地区的输入值无效:...