Sql Postgres以字符串形式返回多个行-列值
我有一个名为servers的表,其中包含列server和site,如下所示:Sql Postgres以字符串形式返回多个行-列值,sql,postgresql,Sql,Postgresql,我有一个名为servers的表,其中包含列server和site,如下所示: table servers: server site servern1 .biz.net servern2 .biz.net servern3 .biz.net 我试图在一行中获得一个字符串输出,如下所示 servern1.biz.net:servern1;servern2.biz.net:servern2;servern3.biz.net:servern3 select string
table servers:
server site
servern1 .biz.net
servern2 .biz.net
servern3 .biz.net
我试图在一行中获得一个字符串输出,如下所示
servern1.biz.net:servern1;servern2.biz.net:servern2;servern3.biz.net:servern3
select string_agg(concat_ws('', server, site,':',server), ';') as vals from servers;
vals
-------------------------------------------------------------------------
servern1.biz.net:servern1;servern2.biz.net:servern2;servern3.biz.net:servern3
(1 row)
并没有我下面的尝试所显示的那么幸运
postgres=# select array_to_string(array_agg(server),':')||site||':'||server as vals from servers group by server,site;
vals
-------------------------
servern2.biz.com:servern2
servern3.biz.com:servern3
servern1.biz.com:servern1
(3 rows)
感谢您的帮助/建议!
谢谢以下几点可以做到:
select string_agg(server||':'||site, ';') as vals
from servers;
如果任一列可以为空或null,则concat_ws可能是更好的选择:
select string_agg(concat_ws(':', server, site), ';') as vals
from servers;
那是王牌,谢谢你,一匹没有名字的马 我刚刚调整了一点以获得如下所示的预期结果
servern1.biz.net:servern1;servern2.biz.net:servern2;servern3.biz.net:servern3
select string_agg(concat_ws('', server, site,':',server), ';') as vals from servers;
vals
-------------------------------------------------------------------------
servern1.biz.net:servern1;servern2.biz.net:servern2;servern3.biz.net:servern3
(1 row)