powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace(listagg) - result of string concatenation is too long
20 сообщений из 20, страница 1 из 1
regexp_replace(listagg) - result of string concatenation is too long
    #39360628
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток господа.
есть запрос, в котором необходимо по s.shipid обьединить данные: ссумировать sum(o.ordqty) и в одну ячейку c.cstnam.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select
to_char(t.aptdat, 'dd.mm.yy hh24:mi') ,s.shipid,sum(o.ordqty),s.stgloc, c.cstnam
from
orddtl o ,trukio t ,ordhdr oo ,shphdr s,custmr c
where
s.shipid = oo.shipid and
oo.ordnum = o.ordnum and
s.shipid = t.shipid and
oo.plnnum = c.plnnum
group by
t.aptdat,
s.shipid,
s.stgloc,
c.cstnam
order by 1,2;



пробую через listagg - получаю ошибку - result of string concatenation is too long!
но если смотреть по s.shipid - 0027199679 значение c.cstnam должно получится - LOCAL CENTRAL WAREHOUSE CS DFNF ; TTRTR
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360632
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360643
Alex__kK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy,

И где тут listagg тобой упоминаемый? А вообще чудес не бывает, если говорит result of string concatenation is too long, так значит оно и есть
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360655
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy,

типатаво:
Код: plsql
1.
select to_char(substr(sys_xml_agg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()')getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360657
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

точку забыл :)
Код: plsql
1.
select to_char(substr(sys_xml_agg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360660
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

бл*
Код: plsql
1.
select to_char(substr(sys_xmlagg(xmlelement(col, id||',')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) from tab
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360737
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Eugene--, спасибо, но как прикрутить к SQL выше ?
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360760
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вашу мать
еще один говнокодер..
Или кто вас так учит именовать объекты БД???!!
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360775
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiyно как прикрутить к SQL выше ?

руками и головой
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360784
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--Вашу мать
еще один говнокодер..
Или кто вас так учит именовать объекты БД???!!
Объекты БД именуют архитекторы БД.
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360788
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer,

ГОВНО архитекторы, ты хотел сказать
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360843
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env - Красава...
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360846
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env - не хочеш помогать - сиди и не строй из себя умника, троль хренов. как будто сюда(на форум/ы) люди приходят таких как ты послушать/почитать, да таких вокруг и тут (по эту сторону монитора) хватает.
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360864
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiyда таких вокруг и тут (по эту сторону монитора) хватает.
Что ж ты так про себя-то?

Открой доку по агрегатной функции sys_xmlagg, почитай параметры, посмотри, что и куда раскладывается в приведённом примере.
И получишь нужный тебе результат. Руками и головой.
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360867
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiy,

разжевать что-ли надо?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with t as 
(
 select 1 id, 'таких' s from dual union all
 select 2 id, 'вокруг'  s from dual union all
 select 3 id, 'и тут' s from dual union all
 select 4 id, '(по эту сторону монитора)' s from dual union all
 select 5 id, 'хватает.' s from dual
)
select  to_char(substr(sys_xmlagg(xmlelement(col, s||' ')).extract('/ROWSET/COL/text()').getclobval(), 1, 2000)) ss
from t
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360951
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envразжевать что-ли надо?


1. В реляционных таблицах нет порядка строк
2. Используй XMLCAST

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as 
(
 select 1 id, 'таких' s from dual union all
 select 2 id, 'вокруг'  s from dual union all
 select 3 id, 'и тут' s from dual union all
 select 4 id, '(по эту сторону монитора)' s from dual union all
 select 5 id, 'хватает.' s from dual
)
select  xmlcast(xmlagg(xmlelement(s,s,' ') order by id) as clob) list
  from  t
/



SY.
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39360999
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Это должен был быть следующий вопрос - про сортировку
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39361001
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Код: plsql
1.
select  xmlagg(xmlelement(s,s,' ') order by id).extract('/S/text()').getclobval() list
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39361084
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и вообще
у ТС изначально не стояло задачи сортировать записи при склейке их в одну строку
...
Рейтинг: 0 / 0
regexp_replace(listagg) - result of string concatenation is too long
    #39361136
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--и вообще
у ТС изначально не стояло задачи сортировать записи при склейке их в одну строку

ТС использовал LISTAGG который сортирует - хоть ты тресни:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQL> with t as
  2  (
  3   select 1 id, 'Z' s from dual union all
  4   select 2 id, 'Y'  s from dual union all
  5   select 3 id, 'X' s from dual union all
  6   select 4 id, '(N)' s from dual union all
  7   select 5 id, 'A.' s from dual
  8  )
  9  select listagg(s,' ') within group(order by 1)
 10    from t
 11  /

LISTAGG(S,'')WITHINGROUP(ORDERBY1)
---------------------------------------------------
(N) A. X Y Z

SQL> 



Так что ORDER BY при замене LISTAGG на XMLAGG нужен для эквивалентности. Я использовал ORDER BY ID для передачи смысла послания. Для эквивалентности c ТС - ORDER BY s.

SY.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / regexp_replace(listagg) - result of string concatenation is too long
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]