我必须将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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句