Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何列出标签中的所有条目_Sql_Regex_Oracle - Fatal编程技术网

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] |