sql >> Databáze >  >> RDS >> Oracle

Zřetězit řádky do CLOB

Jak již zdůraznil de.hh.holger, LISTAGG S CLOBem? AGREGACE ŘETĚZCŮ PŘESAHUJÍCÍ 4000 ZNAKŮ S XMLAGG skutečně tento problém řeší.

Toto téma jsem rozvedl trochu dále a v případě zprávy s opravdu dlouhým řetězcem by to mělo stačit:

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. Odeslat data do aplikace pro Android

  2. Jak můžeme sloučit dvě databáze s identickými schématy?

  3. GROUP_CONCAT s JOINLEFT v Zend Db Select

  4. Jak nasadit MySQL na Ubuntu a plně spravované