这种格式“2/6/4”,如何将2、6、4分别截取出来,如果数字的位数不固定,又要如何处理,请教各位大神

解决方案 »

  1.   

    select regexp_substr('20/400,6000','\d+',1,1) d1,
           regexp_substr('20/400,6000','\d+',1,2) d2,
           regexp_substr('20/400,6000','\d+',1,3) d3 from dual
      

  2.   

    谢谢,要的就是这种效果,而且一个sql可以搞定的
      

  3.   

    regexp_substr('20/400,6000'    这个6000是什么意思?
      

  4.   

    话说我执行这个为何得到空值
    select regexp_substr('20/400/6000','\d+',1,1) d1,
           regexp_substr('20/400/6000','\d+',1,2) d2,
           regexp_substr('20/400/6000','\d+',1,3) d3 from dual楼主可试下如下指令,可以不用手动计算截取长度
    WITH t AS(
    SELECT '20/400/6000'col FROM dual
    )
    select distinct replace(regexp_substr(col,'[^/]+',1,level),'/',' ') col
    from t 
    connect by level<=length(col)-length(replace(col,'/',''))+1output:
    COL
    20  
    400 
    6000
      

  5.   

    select regexp_substr('2/40/61111','[^/]+',1,1) d1,
           regexp_substr('2/40/61111','[^/]+',1,2) d2,
           regexp_substr('2/40/61111','[^/]+',1,3) d3 from dual