Postgresql - concat_ws喜欢的功能?

Gzo*_*org 12 postgresql

我在postgresql上遇到了第一次痛苦的经历,当下的分钟挑战是:

如何在postgresql中执行concat_ws,通过以下方式从组中连接多个字段值:

select concat_ws(';',field_lambda) from table_lambda group by id;
Run Code Online (Sandbox Code Playgroud)

Mil*_*dev 17

对于PostgreSQL 8.4及以上版本:

select ARRAY_TO_STRING(
    ARRAY_AGG(field_lambda),';'
) from table_lambda group by id;
Run Code Online (Sandbox Code Playgroud)


Erw*_*ter 6

自PostgreSQL 9.0(2010年9月发布)以来,有一个聚合函数 string_agg()可以完成你想要的东西:

SELECT string_agg(field1, ';') FROM tbl GROUP BY id;
Run Code Online (Sandbox Code Playgroud)

注意,第二个参数是分隔符(类似于其他聚合函数).

concat_ws()自PostgreSQL 9.1以来还有字符串函数,否则与MySQL相同concat_ws()(当不被滥用为聚合函数时).处理NULL价值观特别有用.

SELECT concat_ws(';', field1, field2, field3) FROM tbl
Run Code Online (Sandbox Code Playgroud)

您甚至可以将两者结合起来以任何方式聚合多个列.

SELECT id, string_agg(concat_ws(',', field1, field2, field3), ';') AS fields
FROM   tbl
GROUP  BY id;
Run Code Online (Sandbox Code Playgroud)