Есть строка '/home/pc/test' ,
и слова в тегах '[/alseko][/logs][/archive]'
Как получить ожидаемый результат =
[/home/pc/test/alseko][/home/pc/test/logs][/home/pc/test/archive]
Мой код, пытаюсь найти:
select '[' || '/home/pc/test' ||
ltrim(substr('[/alseko][/logs][/archive]',
instr('[/alseko][/logs][/archive]', '['),
instr('[/alseko][/logs][/archive]', ']')),'[')
from dual
Ответ
Надо распарсить теги в таблицу, и потом заново собрать в строку, например так:
with data as (
select
'[/alseko][/logs][/archive]' tags,
'\[(\/\w+)' pattern,
'/home/pc/test' prefix
from dual
),
tags as (
select
'['||prefix||regexp_substr (tags, pattern, 1, level, null, 1)||']' tag,
level sort
from data connect by level <= regexp_count (tags, pattern)
)
select listagg (tag) within group (order by sort)
from tags
;
Вывод:
[/home/pc/test/alseko][/home/pc/test/logs][/home/pc/test/archive]
Комментариев нет:
Отправить комментарий