比如字段: id    str
           1      1,2,3,4,5,要取得这样的结果集:
                  str
                  1
                  2
                  3
                  4
                  5

解决方案 »

  1.   

    给你一个以前写过的实力crm@zhang>desc test1;
     Name                                                                                Null?    Type
     ----------------------------------------------------------------------------------- -------- ------
     NAME                                                                                         VARCHAR2(20)
     COURSE                                                                                       VARCHAR2(40)crm@zhang>select * from test1;NAME                 COURSE
    -------------------- ----------------------------------------
    张三                 数学,语文,英语
    李四                 计算机
    王五                 体育,计算机,大学物理,邓小平理论
    赵一                 大学物理
    陈七                 大学物理,C语言crm@zhang>select * from (
      2  select name, (case when num=1 then course else 
      3               substr(course, decode(rownum-rnum, 0, 0, instr(course, ',', 1, rownum-rnum))+1,  
      4                      decode(instr(course, ',', 1, rownum+1-rnum), 0, length(course)+1, instr(cou
    rse, ',', 1, rownum+1-rnum))-decode(rownum-rnum, 0, 0, instr(course, ',', 1, rownum-rnum))-1) end) c
    c            
      5     from (
      6  select name, course, num, decode(num, 1, sum(num) over(order by rowid), sum(num) over(order by 
    rowid)-num+1) rnum from (
      7  select name, course, length(course)-length(replace(course, ',', ''))+1 num from zhang.test1
      8  )
      9  )
     10  connect by rownum-rnum<num
     11  )
     12  where rownum<12;NAME                 CC
    -------------------- -------------------------------------------------------------------------------
    张三                 数学
    张三                 语文
    张三                 英语
    李四                 计算机
    王五                 体育
    王五                 计算机
    王五                 大学物理
    王五                 邓小平理论
    赵一                 大学物理
    陈七                 大学物理
    陈七                 C语言
      

  2.   

    select * from (
    select name, (case when num=1 then course else 
                 substr(course, decode(rownum-rnum, 0, 0, instr(course, ',', 1, rownum-rnum))+1,  
                        decode(instr(course, ',', 1, rownum+1-rnum), 0, length(course)+1, instr(course, ',', 1, rownum+1-rnum))-decode(rownum-rnum, 0, 0, instr(course, ',', 1, rownum-rnum))-1) end) cc            
       from (
    select name, course, num, decode(num, 1, sum(num) over(order by rowid), sum(num) over(order by rowid)-num+1) rnum from (
    select name, course, length(course)-length(replace(course, ',', ''))+1 num from zhang.test1
    )
    )
    connect by rownum-rnum<num
    )
    where rownum<12