如果有个字符串 如:  1,2,3        当然字符串长度不固定,但是肯定以“,”进行分割
用pl/sql 怎么截取成一个数组,数组元素分别为1,2,3
请兄弟们帮写端程序

解决方案 »

  1.   

    --提供一个参考
    scott@YPCOST> with tb as(
      2  select '11;22;3323;abc;ddd' id from dual)
      3  select
      4  substr(';'||id||';',instr(';'||id||';',';',1,rownum)+1,
      5          instr(';'||id||';',';',1,rownum+1)-instr(';'||id||';',';',1,rownum)-1) newid,
      6  instr(';'||id||';',';',1,rownum)col1,  --';'rownum次出现的位置
      7  instr(';'||id||';',';',1,rownum+1)col2, --';'rownum+1次出现的位置
      8  instr(';'||id||';',';',1,rownum+1)-instr(';'||id||';',';',1,rownum) col3 --要截取的长度
      9  from tb
     10  connect by rownum <= length(';'||id||';')
     11       - length(replace(';'||id||';', ';', ''))-1
     12  /NEWID                                          COL1       COL2       COL3
    ---------------------------------------- ---------- ---------- ----------
    11                                                1          4          3
    22                                                4          7          3
    3323                                              7         12          5
    abc                                              12         16          4
    ddd                                              16         20          4