Oracle
 sql >> Base de données >  >> RDS >> Oracle

Limiter les caractères renvoyés dans la requête oracle sql

Seulement avec un peu d'effort. Quelque chose comme ça :

select listagg((case when running_len < 4000 then oi.impression end), ',') within group (order by oi.line)
from (select oi.*,
             sum(length(oi.impression) + 1) over (partition by ?? order by oi.line) as running_len
      from order_impression oi
     ) oi
group by ??;

Cela calcule la longueur courante et agrège uniquement les valeurs qui ne dépassent pas la longueur. Le ?? est tout ce que vous utilisez pour l'agrégation. Cela suppose que line est unique, donc le order by est stable.

Cela n'inclura pas l'impression qui dépasse la longueur - et rien après cela. Il ne coupe pas l'impression. Cette logique est possible, mais elle complique la requête.