33

我必须用最新的 PostgreSQL 替换 Oracle 驱动程序。PostgreSQL 不知道函数 LISTAGG。我必须concat用逗号分隔值。LISTAGGPostgreSQL中的 Oracle 功能等价物是什么?

4

2 回答 2

46

PostgreSQL 中的等效函数是STRING_AGG()

SELECT STRING_AGG (column_name,', ') 
FROM my_table

string_agg:输入值连接成一个字符串,用分隔符分隔

例如agreement_id,在 Apache Ofbiz 17.12.04 中获取所有列表,然后将其表示为字符串

SELECT STRING_AGG(agreement_id, ', ') FROM agreement_item;

-- result
-- "8000, DS-1000-SALES, DS-1000-PURCH, 9000, AGR_SALES"
于 2015-04-10T09:14:05.917 回答
11

从 Postgres 9.0 或更高版本开始,我相信您可以执行以下操作:

SELECT c_id, STRING_AGG(c_grp_id, ',' ORDER BY c_grp_id) AS group_ids 
FROM c_grp_at 
GROUP BY c_id
于 2018-09-20T06:14:06.927 回答