Sql 如何列出标签中的所有条目
有一行Sql 如何列出标签中的所有条目,sql,regex,oracle,Sql,Regex,Oracle,有一行“/home/pc/test”, 以及标签中的单词'[/alseko][/logs][/archive] 如何达到预期的效果= 我的代码,我正在尝试查找: select '[' || '/home/pc/test' || ltrim(substr('[/alseko][/logs][/archive]', instr('[/alseko][/logs][/archive]', '['), instr('[/alseko
“/home/pc/test”
,以及标签中的单词
'[/alseko][/logs][/archive]
如何达到预期的效果= 我的代码,我正在尝试查找:
select '[' || '/home/pc/test' ||
ltrim(substr('[/alseko][/logs][/archive]',
instr('[/alseko][/logs][/archive]', '['),
instr('[/alseko][/logs][/archive]', ']')),'[')
from dual
您可以使用
REGEXP\u SUBSTR
进行拆分,并使用listag
组合路径
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
;
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] |
查询1:
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
;
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] |
您可以使用
REGEXP\u SUBSTR
进行拆分,并使用listag
组合路径
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
;
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] |
查询1:
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
;
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] |