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

Oracle SQL - tạo chuỗi bằng cách nối các hàng nhưng không vượt quá X số ký tự

Tôi đã thử truy vấn sau và đạt được kết quả mong muốn.

SELECT
    LISTAGG(X, ',') WITHIN GROUP(
        ORDER BY
            X
    ) as result
FROM
    (
        SELECT
            X,
            SUM(LENGTH(X)) OVER(
            ORDER BY
                X
            ) LENGTH_X,
            COUNT(1) OVER(
            ORDER BY
                X
            ) - 1 AS COMMAS
        FROM
            (
                SELECT
                    LEVEL   X
                FROM
                    DUAL
                CONNECT BY
                    LEVEL <= 20
            )
    )
GROUP BY
    CEIL((LENGTH_X + COMMAS) / 15);

Đầu ra:

db <> bản trình diễn fiddle

Chúc mừng !!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhà phát triển SQL:Không thể thu thập thống kê hệ thống:không đủ đặc quyền

  2. Công việc tác nhân SQL - Kết nối có thể không được định cấu hình chính xác hoặc bạn có thể không có quyền phù hợp với kết nối này?

  3. Tạo một chuỗi cho trường varchar2 trong Oracle

  4. Điền một bảng PL / SQL từ một khối trong các biểu mẫu D2k của Oracle

  5. Tìm và xóa các ký tự không phải ASCII khỏi Oracle Varchar2