gpt4 book ai didi

arrays - 如何将 ANYARRAY 函数的空数组值转换为 ANYARRAY?

转载 作者:行者123 更新时间:2023-11-29 12:08:12 25 4
gpt4 key购买 nike

我正在使用 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[]) 时到达 not 有效...所以这是一个很好的问题,如何实现它?但是抱歉,我做了一些工作,COALESCE(array,array) 工作正常(呸!)。

因此,“合并问题”仅仅是说明性的/说教性的。我在这里真正想了解的是:
如何使用ANYARRAY


PS: 其他好奇心,字符串concat()|| 和PostgreSQL 中的其他连接操作符做一些“合并”,

 select concat(NULL::text, 'Hello', NULL::text); -- 'Hello'
select null::text[] || array[]::text[]; -- []
select array[]::text[] || null::text[]; -- []

最佳答案

How to use anyarray?

在问题中描述的用法的上下文中,这是一个有趣的问题。我知道的唯一方法是将参数用作变量。在 plpgsql(不是普通的 sql)函数中是可能的:

create or replace function array_coalesce(anyarray) 
returns anyarray as $f$
begin
if $1 is null then
select '{}' into $1;
end if;
return $1;
end
$f$ language plpgsql immutable;

select array_coalesce(null::int[]);

array_coalesce
----------------
{}
(1 row)

顺便说一下,您可以简单地对数组使用 coalesce():

select coalesce(null::text[], '{}'::text[]);

coalesce
----------
{}
(1 row)

关于arrays - 如何将 ANYARRAY 函数的空数组值转换为 ANYARRAY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50281296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com