Вы можете разделить, используя REGEXP_SUBSTR
, и объединить пути, используя LISTAGG
.
SQL Fiddle
Настройка схемы Oracle 11g R2 :
CREATE TABLE t
("LINE" varchar2(13), "TAGS" varchar2(31))
;
INSERT ALL
INTO t ("LINE", "TAGS")
VALUES ('/home/pc/test', '[/ alseko] [/ logs] [/ archive]')
SELECT * FROM dual
;
Запрос 1 :
SELECT '[' || LISTAGG(paths, '][') WITHIN
GROUP (
ORDER BY NULL
) || ']' as all_paths
FROM (
SELECT line || '/' || REGEXP_SUBSTR(tags, '\[/ (.+?)\]', 1, LEVEL, NULL, 1) AS paths
FROM t connect BY LEVEL <= REGEXP_COUNT(tags, '\[/ (.+?)\]')
) s
Результаты :
| ALL_PATHS |
|-------------------------------------------------------------------|
| [/home/pc/test/alseko][/home/pc/test/archive][/home/pc/test/logs] |