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

问题描述 投票:1回答:1

我必须将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) ....但这由于上述问题而无法使用...

非常感谢您的帮助。.

postgresql plpgsql postgresql-9.5 postgresql-11
1个回答
1
投票

很难猜测为什么有人会想让自己的生活变得如此奇怪。无论如何,类型foo是具有单个text[]元素的复合类型,因此文字应类似于:

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

也许domain会更方便:

create domain foo as text[];
select array['test_one']::foo;
© www.soinside.com 2019 - 2024. All rights reserved.