有个字符串 比如 123;234;345;456;567;
想把它分解成 123  和 234;345;456;567 两个字符串,请问要这么实现

解决方案 »

  1.   

    select substr('123;234;345;456;567',0,3) sstr,substr('123;234;345;456;567',4,11) estr from dual 
      

  2.   


    --不知道楼主最终是不是这样的需求
    with tb as(
    select '11;22;3323;abc;ddd' id from dual)
    select
    substr(';'||id||';',instr(';'||id||';',';',1,rownum)+1,
            instr(';'||id||';',';',1,rownum+1)-instr(';'||id||';',';',1,rownum)-1) newid,
    instr(';'||id||';',';',1,rownum)col1,  --';'rownum次出现的位置
    instr(';'||id||';',';',1,rownum+1)col2, --';'rownum+1次出现的位置
    instr(';'||id||';',';',1,rownum+1)-instr(';'||id||';',';',1,rownum) col3 --要截取的长度
    from tb
    connect by rownum <= length(';'||id||';')
         - length(replace(';'||id||';', ';', ''))-1NEWID                                          COL1       COL2       COL3
    ---------------------------------------- ---------- ---------- ----------
    11                                                1          4          3
    22                                                4          7          3
    3323                                              7         12          5
    abc                                              12         16          4
    ddd                                              16         20          4
      

  3.   

    直接substrselect substr('123;234;345;456;567',1,instr('123;234;345;456;567',';',1)-1) str1,
    substr('123;234;345;456;567',instr('123;234;345;456;567',';',1)+1) str2
    from tb