Страницы

Поиск по вопросам

пятница, 15 февраля 2019 г.

Как перечислить все записи в тегах

Есть строка '/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]

Комментариев нет:

Отправить комментарий