sql >> Databáze >  >> RDS >> Oracle

Omezte počet znaků vrácených v dotazu Oracle SQL

Jen s trochou snahy. Něco jako toto:

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

Tím se vypočítá průběžná délka a agregují se pouze hodnoty, které délku nepřesahují. ?? je cokoliv, co používáte pro agregaci. To předpokládá, že line je jedinečný, takže order by je stabilní.

Toto nebude zahrnovat impression která přesahuje délku -- a po tom nic. Neubere to dojem. Tato logika je možná, ale komplikuje dotaz.



  1. Výukový program MySQL – Pochopení sekund za hlavní hodnotou

  2. Jak mohu získat počet záznamů ovlivněných uloženou procedurou?

  3. Získejte MAX ze skupiny GROUP BY

  4. Je možné GROUP BY více sloupců pomocí MySQL?