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

Ограничаване на знаците, върнати в Oracle sql заявка

Само с малко усилия. Нещо подобно:

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

Това изчислява текущата дължина и агрегира само стойности, които не надвишават дължината. ?? е каквото и да използвате за агрегиране. Това предполага, че line е уникален, така че order by е стабилен.

Това няма да включва impression което надвишава дължината -- и нищо след това. Не прекъсва впечатлението. Тази логика е възможна, но усложнява заявката.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle:Най-бързият начин в PL/SQL да видите дали съществува стойност:списък, VARRAY или временна таблица

  2. Oracle :изберете максимална стойност от различни колони на същия ред

  3. Какво означава следната грешка на Oracle:невалиден индекс на колона

  4. Как да препратите към съставен първичен ключ в SQL

  5. SQL груповата функция е вложена твърде дълбоко