ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 转pg wmsys.wm_concat 的替代方案

oracle 转pg wmsys.wm_concat 的替代方案

原创 Linux操作系统 作者:babyyellow 时间:2012-05-03 10:29:13 0 删除 编辑
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 的长度。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/133735/viewspace-722601/,如需转载,请注明出处,否则将追究法律责任。

上一篇: asm 磁盘切换
请登录后发表评论 登录
全部评论
oracle MySQL Postgresql 专职数据库dba。 系统架构师。 mysql 官方认知dba 。 15年专职dba 经验。

注册时间:2010-12-02

  • 博文量
    248
  • 访问量
    1473126