powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обратная функция по отношению к listagg
6 сообщений из 31, страница 2 из 2
Обратная функция по отношению к listagg
    #38985861
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и left correlation:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
WITH t1 AS
  ( SELECT 1 id ,'1234 567 89 0' str FROM dual
  UNION ALL
  SELECT 2 id ,'as&df dfg fg g' str FROM dual
  UNION ALL
  SELECT 3 id , 'gg' str FROM dual
  UNION ALL
  SELECT 4 id , NULL str FROM dual
  )
select t1.*,dbms_xmlgen.convert(xmlcast(column_value as varchar2(10)),1) column_value
 from t1, xmltable(nvl(rtrim(regexp_replace(dbms_xmlgen.convert(str)||' ', '(\S+)\s+', '"\1",'), ', '), '1 to 0')) x
/

        ID STR            COLUMN_VALUE
---------- -------------- ------------
         1 1234 567 89 0  1234
         1 1234 567 89 0  567
         1 1234 567 89 0  89
         1 1234 567 89 0  0
         2 as&df dfg fg g as&df
         2 as&df dfg fg g dfg
         2 as&df dfg fg g fg
         2 as&df dfg fg g g
         3 gg             gg

9 rows selected.

WITH t1 AS
  ( SELECT 1 id ,'1234 567 89 0' str FROM dual
  UNION ALL
  SELECT 2 id ,'as&df dfg fg g' str FROM dual
  UNION ALL
  SELECT 3 id , 'gg' str FROM dual
  UNION ALL
  SELECT 4 id , NULL str FROM dual
  )
select t1.*,dbms_xmlgen.convert(xmlcast(column_value as varchar2(10)),1) column_value
 from t1, 
xmltable(nvl(rtrim(regexp_replace(dbms_xmlgen.convert(str)||' ','(\S+)\s+','"\1",'),', '),'""'))(+) x -- ну и "" вместо 1 to 0 - буковок меньше
/

        ID STR            COLUMN_VALUE
---------- -------------- --------------
         1 1234 567 89 0  1234
         1 1234 567 89 0  567
         1 1234 567 89 0  89
         1 1234 567 89 0  0
         2 as&df dfg fg g as&df
         2 as&df dfg fg g dfg
         2 as&df dfg fg g fg
         2 as&df dfg fg g g
         3 gg             gg
         4

10 rows selected.



SY.
...
Рейтинг: 0 / 0
Обратная функция по отношению к listagg
    #38985866
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYВ общем случае что-то типа:Да баловство это всё. Более правильный путь - написать свою табличную функцию с прогнозируемым поведением.
...
Рейтинг: 0 / 0
Обратная функция по отношению к listagg
    #38985876
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYНу и left correlation:
Код: plsql
1.
(+)

Это лишнее.
...
Рейтинг: 0 / 0
Обратная функция по отношению к listagg
    #38985905
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicЭто лишнее.

А куда делась

SELECT 4 id , NULL str FROM dual

Тут или left correlation или

WHERE TRIM(str) IS NOT NULL

и NVL не нужен.

SY.
...
Рейтинг: 0 / 0
Обратная функция по отношению к listagg
    #38985908
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYА куда деласьСравни с 17777002
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Обратная функция по отношению к listagg
    #39319101
sgibnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--&str='4,5,6,2,3,4,5,6'
select regexp_substr(&str,'[^,]+',1,level) s from dual
connect by regexp_substr(&str,'[^,]+',1,level) is not null;
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обратная функция по отношению к listagg
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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