ORACLE XMLAGG限制

问题描述 投票:1回答:2

我有具有多行文本需要被合并成1行的表。我需要支持字符串超过4000个字符长,所以LISTAGG是不是一种选择。

我已经做了很多后,搜索如下:

select mdesc.DEFINITION_ID,
        xmlagg(xmlelement(E,mdesc.record_desc||' ')).EXTRACT('//text()')
        FROM METRIC_DESC mdesc
        GROUP BY DEFINITION_ID

但我的返回结果中包含某些字符转义。

这个所谓线程有一些建议

How to tweak LISTAGG to support more than 4000 character in select query?

但我不能转换为CLOB,我的目的。

任何想法,我怎么能得到的查询结果中可用的格式? (即不CLOB和没有逃脱?)

oracle xml-parsing
2个回答
1
投票

要传达的XMLType对象为CLOB,你将需要添加一个getClobVal()功能。


0
投票

尝试使用rtrim功能:

SELECT mdesc.definition_id, 
       Rtrim(Xmlagg(Xmlelement(e, mdesc.record_desc 
                                  || ' ')).EXTRACT('//text()'), ',') 
FROM   metric_desc mdesc 
GROUP  BY definition_id ;
© www.soinside.com 2019 - 2024. All rights reserved.