我有具有多行文本需要被合并成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和没有逃脱?)
要传达的XMLType对象为CLOB,你将需要添加一个getClobVal()
功能。
尝试使用rtrim
功能:
SELECT mdesc.definition_id,
Rtrim(Xmlagg(Xmlelement(e, mdesc.record_desc
|| ' ')).EXTRACT('//text()'), ',')
FROM metric_desc mdesc
GROUP BY definition_id ;