oracle数据库wm_concat函数在PostgreSQL(pg)数据库的替代方案

oracle 数据库中比较常用到wmsys.wm_concat () 来连接字符串

把多行的数据库连接到一起(默认是用逗号分割的) 

oracle 转pg 需要一个替代方案,尽量的应用代码改动小,

pg 还是很能干的,果然找到了一个替代方案

[code]
cyp_app=> \df STRING_AGG
                            List of functions
   Schema   |    Name    | Result data type | Argument data types | Type 
------------+------------+------------------+---------------------+------
 pg_catalog | string_agg | text             | text, text          | agg
(1 row)
[/code]

其实呢,pg 提供了一族函数来处理,这种所谓的聚集操作,pg 还对这些函数做了扩展。 
arrary_agg ()  string_agg( )  xmlagg()  分别来处理数组,字符串和xml文档。 

SELECT array_agg(a ORDER BY b DESC) FROM table;    

SELECT string_agg(a, ’,’ ORDER BY a) FROM table;

SELECT xmlagg(x) FROM (SELECT x FROM test ORDER BY y DESC) AS tab;


补充一点  oracle 的wm_concat 的结果最大是4k  ,pg string_agg 的返回的类型是text ,可以无限长。 至少可以达到1g 的长度。 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值