oracle WMSYS.WM_CONCAT 函数转为listagg

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle WMSYS.WM_CONCAT 函数转为listagg相关的知识,希望对你有一定的参考价值。

诸位大神,请帮忙把下面这个sql中的 WMSYS.WM_CONCAT 函数转为listagg
SELECT r.*,
(SELECT g.group_name
FROM mon_evt_rule_group g
WHERE g.id = r.rule_group_id)
AS rule_group_name,
(SELECT TO_CHAR (WMSYS.WM_CONCAT (s.name))
FROM mon_evt_selector s
WHERE INSTR (r.selector_relations, '''' || s.id || '''') > 0)
AS selector_name,
(SELECT u.user_name
FROM mon_sys_user u
WHERE u.it_code = r.create_person_id)
AS create_person_name
FROM mon_evt_rule r
WHERE 1 = 1
ORDER BY r.RULE_GROUP_ID DESC
ORA-06502: PL/SQL: numeric or value error: character string buffer too small
ORA-06512: at "WMSYS.WM_CONCAT_IMPL", line 30
现在报这个错,我在网上搜说是可以用listagg替换WMSYS.WM_CONCAT,我自己写了几个都不行,还请各位大神帮忙啊

参考技术A NVL2(expr1,expr2,expr3) 功能:如果参数表达式expr1值为NULL,则NVL2()函数返回参数表达式expr3的值;如果参数表达式expr1值不为NULL,则NVL2()函数返回参数表达式expr2的值。NVL( string1, replace_with) 功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。追问

你写的这是什么啊?

本回答被提问者和网友采纳

以上是关于oracle WMSYS.WM_CONCAT 函数转为listagg的主要内容,如果未能解决你的问题,请参考以下文章

oracle中WMSYS.WM_CONCAT 函数关系的列出现乱码

oracle plsql wmsys.wm_concat()函数问题

linux下oracle缺少wmsys.wm_concat函数,执行创建视图的时候报错:ORA-00904

Oracle数据库sql 列转字符串行函数WMSYS.WM_CONCAT()

[Oracle]行列转换(行合并与拆分)

Oracle一列的多行数据拼成一行显示