2017-04-18 114 views
1

當一行包含一個空數組({})時使用array_agg時出現問題。Postgres: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 

凡列定義如下:

service_name - text 
metric_name - text 
value_textarray - text[] 

當我執行查詢,我必須在數據庫空數組({}),我得到以下錯誤:

ERROR: cannot accumulate empty arrays 

我應該如何解決這個問題?

+0

只需添加「和數組<>空」到WHERE子句? – jarlh

+0

確實。 'AND value_textarray <>'{}''拿了蛋糕。謝謝。 – Travo

+1

或者:'和coalesce(cardinality(value_textarray),0)= 0' –

回答

0

我有同樣的問題,我不能空濾鏡陣列,我發現這個功能可以解決這個問題:

CREATE AGGREGATE array_accum (anyarray) 
(
    sfunc = array_cat, 
    stype = anyarray, 
    initcond = '{}' 
); 

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