Oracle SQL使用重复分隔符拆分字符串
我有一个循环,它通过一个数组,其中每个值都需要在正斜杠上拆分(Oracle SQL使用重复分隔符拆分字符串,sql,regex,oracle,Sql,Regex,Oracle,我有一个循环,它通过一个数组,其中每个值都需要在正斜杠上拆分(/)。我有一个工作正常的代码,但是如果一个字符串有多个正斜杠,我的代码将创建3个子字符串,而不是2个子字符串: xxx/xx/x 变成 xxx xx x 我需要 xxx xx/x 这是我的密码: SELECT REGEXP_SUBSTR(arr(i),'[^/]+', 1, level) BULK COLLECT INTO sub_array FROM dual CONNECT BY REGEXP_SU
/
)。我有一个工作正常的代码,但是如果一个字符串有多个正斜杠,我的代码将创建3个子字符串,而不是2个子字符串:
xxx/xx/x
变成
xxx
xx
x
我需要
xxx
xx/x
这是我的密码:
SELECT REGEXP_SUBSTR(arr(i),'[^/]+', 1, level) BULK COLLECT
INTO sub_array
FROM dual
CONNECT BY REGEXP_SUBSTR(arr(i), '[^/]+', 1, level)
IS NOT NULL;
有人能帮忙吗
我尝试将occurence参数更改为'1',但没有任何区别:
SELECT REGEXP_SUBSTR(arr(i),'[^/]+', 1, 1) BULK COLLECT
INTO sub_array
FROM dual
CONNECT BY REGEXP_SUBSTR(arr(i), '[^/]+', 1, 1)
IS NOT NULL;
如果您只想在第一个
/
上拆分,那么听起来不需要任何正则表达式。您可以使用INSTR
轻松找到第一个/
字符的位置,然后使用SUBSTR
在该位置拆分
WITH test_input AS (
SELECT 'xxx/xx/x' AS val
FROM dual
)
SELECT t.val AS original_string,
INSTR(t.val,'/',1) AS position_of_first_slash,
SUBSTR(t.val,0,INSTR(t.val,'/',1)-1) AS substring_before_first_slash,
SUBSTR(t.val,INSTR(t.val,'/',1)+1) AS substring_after_first_slash
FROM test_input t
仍然得到相同的错误:(可能它与REGEX_SUBSTR的关系比实际表达式的关系更大?您可能会通过两个表达式得到这些块:
regexp_SUBSTR(col,“^[^/]*”)
和regexp_SUBSTR(col,“/(.*),1,1,NULL,1)