oracle中分解逗号分隔的字符串

drop table cs_thz_1 ;

create table cs_thz_1(   nid number(10)   ,sname varchar2(1000) );

truncate table cs_thz_1;

insert into cs_thz_1(nid,sname)          

select 1,'苹果,香蕉'  from dual union all select 2,'茄子,豆角,西蓝花,芥蓝'  from dual union all select 3,'笔'  from dual ;

commit;

--sname确保两边都有逗号才能分隔

select nid,sname,cnt,level       

,substr(sname, instr(sname,',',1,level) + 1 , instr(sname, ',', 1, level + 1) - instr(sname, ',', 1, level) - 1) s2

from (  

  select nid,','||sname||',' as sname,length(','||sname)-length(replace(','||sname,',')) cnt from cs_thz_1--sname确保两边都有逗号

) connect by prior nid = nid and level <= cnt and prior dbms_random.value is not null ;

select instr(s1,',',1,5) from (--没有第5个逗号则返回0  

  select '1,2,3,4,5' s1 from dual

) ;

猜你喜欢

转载自www.cnblogs.com/jiangqingfeng/p/9555975.html