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)