Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Połącz wiersze w CLOB

Jak już wskazał de.hh.holger, LISTAGG Z CLOB? AGREGACJA ŁAŃCUCHÓW PRZEKRACZAJĄCA 4000 ZNAKÓW Z XMLAGG rzeczywiście rozwiązuje ten problem.

Rozwinąłem nieco dalej ten temat i to powinno wystarczyć w przypadku naprawdę długiej wiadomości tekstowej:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-06502:PL/SQL:błąd liczbowy lub wartości:zbyt mały bufor ciągu znaków

  2. aktualizacja bardzo dużego stołu wyroczni

  3. Wybierz min. trzy wartości rekordu w innej tabeli z JOIN

  4. Formularze Oracle w R12/R12.2

  5. Jak wdrożyć aplikację .NET korzystającą z ODAC bez instalowania całego składnika u użytkownika?