gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 17:43:41 29 4
gpt4 key购买 nike

通常,WM_CONCAT 是一个聚合函数,它从像这里这样用逗号分隔的表中返回值。

假设我有一张 table 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, 
LISTAGG(col_text, '|')
WITHIN GROUP (ORDER BY col_text) text
FROM
(
SELECT DISTINCT col_id, col_text
FROM table1
)
GROUP BY col_id

SQLFiddle

关于sql - 更改 Oracle 11gR2 的 WM_CONCAT 函数的分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786951/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com