Postgres 将数组转换为自定义类型
Postgres cast Array to a Custom Type
我必须将 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;
我必须将 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;