sql – 更改Oracle 11gR2的WM_CONCAT函数的分隔符

前端之家收集整理的这篇文章主要介绍了sql – 更改Oracle 11gR2的WM_CONCAT函数的分隔符前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,WM_CONCAT是一个聚合函数,它返回表中用逗号分隔的值,就像这里一样.

假设我有一个像这样的表foo:

col_id     | col_text


111        | This

111        | is

111        | a

111        | test.

如果我使用此查询

SELECT CAST(WM_CONCAT(col_text) AS VARCHAR2(100)),col_id FROM foo

结果将是

This,is,a,test.

是否可以将分隔符(‘,’)更改为其他字符,如’.’或’|’ WM_CONCAT()函数

或者创建一个可以像WM_CONCAT()那样执行的用户定义函数

解决方法

您可能想要使用 LISTAGG.
SELECT col_id,LISTAGG(col_text,'|') WITHIN GROUP (ORDER BY col_text) text
  FROM table1
 GROUP BY col_id

输出

| COL_ID |            TEXT |
----------------------------
|    111 | This|a|is|test. |

SQLFiddle

更新如果您需要在列表中获取不同的文本值

SELECT col_id,'|')
         WITHIN GROUP (ORDER BY col_text) text
  FROM 
(
  SELECT DISTINCT col_id,col_text
    FROM table1
)
 GROUP BY col_id

SQLFiddle

猜你在找的MsSQL相关文章