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

Oracle SQL - създаване на низ чрез свързване на редове, но не надвишава X брой символи

Опитах следната заявка и постигнах желания резултат.

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);

Изход:

db<>демонстрация на fiddle

Наздраве!!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. node.js oracledb не вмъква, нито актуализира

  2. Грешка (2,7):PLS-00428:очаква се клауза INTO в този оператор SELECT

  3. Променлива на таблица в съхранена процедура на Oracle

  4. Използването на клаузата RETURNING INTO по-бързо ли е от отделен оператор SELECT?

  5. Oracle позволява ли опцията за четене без ангажимент?