Postgres 将数组强制转换为自定义类型



我必须将 varchar 数组转换为自定义类型,但它失败了。

场景

CREATE TYPE foo AS (foo text[]);

SELECT ARRAY['TEST_ONE']::foo; -- fails with ERROR: cannot cast type text[] to foo

我实际上必须将此类型作为可选参数传递给函数,因此我必须将其默认值放在函数参数列表中。喜欢这个

create function foo_func(par1 foo DEFAULT ARRAY['TEST_ONE']::foo) ....但由于上述问题,这不起作用...

帮助将不胜感激。

很难猜测为什么有人想用这样一个奇怪的想法使他的生活复杂化。无论如何,类型foo是具有单个text[]元素的复合类型,因此文本应如下所示:

SELECT ROW(ARRAY['TEST_ONE'])::foo;

也许域名会更方便:

create domain foo as text[];
select array['test_one']::foo;

相关内容

  • 没有找到相关文章

最新更新