关于这个主题有很多类似的问题,但我找不到任何解决方案来考虑最终结果对于 varchar2 来说太大的任何问题。
所以我想做的就是改变这一点:
Column1 | Column2
-------- --------
1 Hello
1 world,
1 please help
2 Thanks
2 world,
2 you're the best.
进入这个:
Column1 | Column2
-------- --------
1 Hello world, please help
2 Thanks world, you're the best.
我的特殊问题是,在某些情况下,新的串联值超过 4000 个字符,因此我无法使用LISTAGG
正如我所希望的那样。我对无需编写函数的解决方案特别感兴趣,但两者都可以。
正如 de.hh.holger 已经指出的那样,LISTAGG 与 CLOB?使用 XMLAGG 进行字符串聚合超过 4000 个字符 http://sonra.io/listagg-with-clob-string-aggregation-exceeding-4000-characters-with-xmlagg/确实解决了这个问题。
我已经对这个主题做了进一步的阐述,如果字符串消息很长,这应该可以解决问题:
SELECT
table_row_id,
DBMS_XMLGEN.CONVERT (
EXTRACT(
xmltype('<?xml version="1.0"?><document>' ||
XMLAGG(
XMLTYPE('<V>' || DBMS_XMLGEN.CONVERT(data_value)|| '</V>')
order by myOrder).getclobval() || '</document>'),
'/document/V/text()').getclobval(),1) AS data_value
FROM (
SELECT 1 myOrder, 1 table_row_id,'abcdefg>' data_value FROM dual
UNION ALL
SELECT 2, 1 table_row_id,'hijklmn' data_value FROM dual
UNION ALL
SELECT 3, 1 table_row_id,'opqrst' data_value FROM dual
UNION ALL
SELECT 4, 1 table_row_id,'uvwxyz' data_value FROM dual)
GROUP BY
table_row_id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)