做了个拆分字符串的存储过程,但是我想把拆分下来的字段,再进行拆分当成字段,该怎么嵌套,
例如 字符串是“aaa|bbb|ccc|ddd,cccc|ddd|aaaa|fffff”
第一次拆成
----------------------------------
aaa|bbb|ccc|ddd
cccc|ddd|aaaa|fffff
第二次拆成
--------------------------------
aaa bbb ccc ddd
cccc ddd aaaa ffffff
这样怎么嵌套?
------解决方案--------------------
SELECT regexp_substr(col,'[^
------解决方案--------------------
]+',1,1),regexp_substr(col,'[^
------解决方案--------------------
]+',1,2),regexp_substr(col,'[^
------解决方案--------------------
]+',1,3),regexp_substr(col,'[^
------解决方案--------------------
]+',1,4) FROM
( SELECT regexp_substr('aaa
------解决方案--------------------
bbb
------解决方案--------------------
ccc
------解决方案--------------------
ddd,cccc
------解决方案--------------------
ddd
------解决方案--------------------
aaaa
------解决方案--------------------
fffff','[^,]+',1,1) col FROM dual
UNION ALL
SELECT regexp_substr('aaa
------解决方案--------------------
bbb
------解决方案--------------------
ccc
------解决方案--------------------
ddd,cccc
------解决方案--------------------
ddd
------解决方案--------------------
aaaa
------解决方案--------------------
fffff','[^,]+',1,2) FROM dual
)
死办法,如果个数不确定,就麻烦了。。。
------解决方案--------------------
你自己再简单的修改一下即可
with t as
(select 'aaa
------解决方案--------------------
bbb
------解决方案--------------------
ccc
------解决方案--------------------
ddd,cccc
------解决方案--------------------
ddd
------解决方案--------------------
aaaa
------解决方案--------------------
fffff' book_nm from dual)
select rn, REGEXP_SUBSTR(str, '[^
------解决方案--------------------
]+', 1, LEVEL)
from (select rownum rn, REGEXP_SUBSTR(book_nm, '[^,]+', 1, LEVEL) STR
from (select rownum id, t.* from t) t1
connect by level <=
length(book_nm) - length(replace(book_nm, ',', '')) + 1
and id = prior id
and prior dbms_random.value is not null) t2
connect by level <= length(str) - length(replace(str, '
------解决方案--------------------
', '')) + 1
and rn = prior rn
and prior dbms_random.value is not null;