sql >> Database >  >> RDS >> Oracle

Rijen samenvoegen tot CLOB

Zoals de.hh.holger al opmerkte, de LISTAGG MET CLOB? STRING AGGREGATIE VAN MEER DAN 4000 KARAKTERS MET XMLAGG lost dit probleem inderdaad op.

Ik heb het onderwerp wat verder uitgewerkt en dit zou de truc moeten zijn in het geval van een echt lang stringbericht:

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


  1. SQL vervangen of invoegen in syntaxisfout

  2. Deelnemen aan meerdere tabellen, waarbij NULL's behouden blijven

  3. Django combineert AND- en OR-query's met ManyToMany-veld

  4. Hoe vervang ik een reguliere expressie in MySQL?