Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Nối các hàng thành CLOB

Như de.hh.holger đã chỉ ra, LISTAGG VỚI CLOB? STRING ĐẠI CƯƠNG VƯỢT QUA 4000 KÝ TỰ VỚI XMLAGG thực sự giải quyết được vấn đề này.

Tôi đã giải thích kỹ hơn một chút về chủ đề này và điều này sẽ thực hiện thủ thuật trong trường hợp một thông báo chuỗi thực sự dài:

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. Tại sao tôi không thể sử dụng một biến ràng buộc trong một câu lệnh thực thi ngay lập tức?

  2. Không thể tìm thấy hoặc tải oracle.jdbc.driver.OracleDriver

  3. Sql - Hợp nhất các hàng nếu ngày kết nối

  4. Chèn dữ liệu vào bảng bằng cách sử dụng thực thi ngay trong Oracle

  5. Phương pháp thu thập:Hàm COUNT trong cơ sở dữ liệu Oracle