oracle資料庫wm_concat函式在PostgreSQL(pg)資料庫的替代方案
阿新 • • 發佈:2019-01-09
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 的長度。
把多行的資料庫連線到一起(預設是用逗號分割的)
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 的長度。