sql >> Database teknologi >  >> RDS >> Oracle

Begræns tegn, der returneres i oracle sql-forespørgsel

Kun med en smule indsats. Noget som dette:

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

Dette beregner løbelængden og samler kun værdier, der ikke overstiger længden. ?? er hvad end du bruger til aggregering. Dette forudsætter, at line er unik, så order by er stabil.

Dette inkluderer ikke impression der overstiger længden -- og intet efter det. Det skærer ikke indtrykket af. Den logik er mulig, men den komplicerer forespørgslen.



  1. Er det muligt at migrere fra Realm til Sqlite?

  2. Hvordan kan vi i MySQL se, om et indeks for en tabel er klynget eller ej?

  3. Brug af et SQLAlchemy Integer-felt til at oprette et tidsdelta-objekt til filtrering

  4. Brug streng indeholder funktion i oracle SQL-forespørgsel