加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:47:25 所属栏目:MsSql教程 来源:网络整理
导读:通常,WM_CONCAT是一个聚合函数,它返回表中用逗号分隔的值,就像这里一样. 假设我有一个像这样的表foo: col_id | col_text111 | This111 | is111 | a111 | test. 如果我使用此查询: SELECT CAST(WM_CONCAT(col_text) AS VARCHAR2(100)),col_id FROM foo 结果
通常,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读