我正在使用pgv10。我需要的功能似乎是错误的功能:
CREATE FUNCTION array_coalesce(ANYARRAY) RETURNS ANYARRAY AS $f$
SELECT CASE WHEN $1 IS NULL THEN array[]::ANYARRAY ELSE $1 END;
$f$ language SQL IMMUTABLE;
好奇心
...我开始简化一个复杂的问题,并且进入不工作的测试select coalesce(null::text[], array[]::text[])
......所以这是一个很好的问题,如何实现它?但抱歉,我做了一些工作, COALESCE(数组,数组)工作正常(p!)。
因此,“合并问题”仅仅是说明性的/遗嘱的。我真正想要理解的是:
如何使用ANYARRAY
?
PS:其他好奇心,PostgreSQL中的字符串concat()
,||
和其他连接运算符会做一些“合并”,
select concat(NULL::text, 'Hello', NULL::text); -- 'Hello'
select null::text[] || array[]::text[]; -- []
select array[]::text[] || null::text[]; -- []