日期:2014-05-16  浏览次数:21656 次

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