Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将ANYARRAY函数的空数组值强制转换为ANYARRAY?_Arrays_Postgresql - Fatal编程技术网

Arrays 如何将ANYARRAY函数的空数组值强制转换为ANYARRAY?

Arrays 如何将ANYARRAY函数的空数组值强制转换为ANYARRAY?,arrays,postgresql,Arrays,Postgresql,我使用的是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; create or replace function array_coalesce(anyarray) returns an

我使用的是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;
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)

好奇心

。。。我开始简化一个复杂的问题,并进入了测试
selectcoalesce(null::text[],array[]::text[])
,该测试不起作用。。。所以这是一个很好的问题,如何实施它?但很抱歉,我做了一些工作,COALESCE(数组,数组)工作得很好(呸!)

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


PS:PostgreSQL中的字符串
concat()
| |
和其他连接运算符进行了一些“合并”

如何使用anyarray

这是一个有趣的问题,就问题中描述的用法而言。我知道的唯一方法是使用参数作为变量。在plpgsql(而不是普通sql)函数中可以:

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;
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) 
谢谢。这个问题令人困惑,但你明白。是的,COALESCE()工作正常,我编辑了更好的标题和评论,这是一个例证。