我必须将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;
也许domain会更方便:
create domain foo as text[];
select array['test_one']::foo;