Postgres:array_agg抛出'无法为空数组积累空数组'

Tra*_*avo 7 sql postgresql

array_agg当行包含空数组({})时使用时遇到问题.

这是我的SQL查询:

SELECT service_name, metric_name, array_agg(value_textarray)
FROM service_data
WHERE service_name = 'ActivityDataService'
GROUP BY service_name, metric_name
Run Code Online (Sandbox Code Playgroud)

列定义如下:

service_name - text
metric_name - text
value_textarray - text[]
Run Code Online (Sandbox Code Playgroud)

当我执行查询并且{}数据库中有空数组()时,出现以下错误:

ERROR:  cannot accumulate empty arrays
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

小智 9

我有同样的问题,我无法过滤空数组,我发现这个函数解决了这个问题:

CREATE AGGREGATE array_accum (anyarray)
(
    sfunc = array_cat,
    stype = anyarray,
    initcond = '{}'
);  
Run Code Online (Sandbox Code Playgroud)

来源:https://gist.github.com/ryandotsmith/4602274