Oracle
 sql >> база данни >  >> RDS >> Oracle

Свързване на редове в CLOB

Както de.hh.holger вече посочи, LISTAGG С CLOB? АГРЕГИРАНЕ НА НИЗОВЕ, НАДВИШАВАЩО 4000 ЗНАКА С 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlldr.exe не работи за Windows 10

  2. Инсталиране на SonarQube с Oracle DB - Получаването на потребител не съществува

  3. Брой редове, засегнати от АКТУАЛИЗИРАНЕ в PL/SQL

  4. Статичен срещу динамичен sql

  5. ORA-01779:не може да модифицира колона, която съответства на таблица без запазен ключ