oracle 使用substr对一个字符串根据逗号来分段截取
有一个字符串'abc,def,mns,opq',怎么能把他同过中间的‘,’截取成4个字符串abc、def、mns和opq了?
------解决方案--------------------select SUBSTR('abc,def,mns,opq',1,3)
------解决方案--------------------'、'
------解决方案--------------------SUBSTR('abc,def,mns,opq',5,7)
------解决方案--------------------'、'
------解决方案--------------------SUBSTR('abc,def,mns,opq',9,11)
------解决方案--------------------'、'
------解决方案--------------------SUBSTR('abc,def,mns,opq',13,15) FROM DUAL
------解决方案--------------------
with t1 as
(
select 1 c1,'abc,def,mns,opq' c2 from dual
)
select distinct c1,replace(regexp_substr(c2,'[^,]+',1,level),',',' ') c2
from t1
connect by level<=length(c2)-length(replace(c2,',',''))+1
order by c1
c1 c2
-------------------
1 1 abc
2 1 def
3 1 mns
4 1 opq