字符串:str=asddd|aa|dfds|fsdsf|sdfaf|dsfsaf|ssss|dffds|fsdfd如何在存储过程中把以“|”分割的str字符串,中的数据放到一个数组中数组:Arry{"asddd","aa","dfds"....}

解决方案 »

  1.   

    oracle没有提供这种方法
    自己写循环处理。
      

  2.   

    使用instr和substr这两个方法进行解析吧
      

  3.   

    create or replace procedure substring_array(str in varchar2) as
    type array_str is table of varchar2(100)
         index by binary_integer;
    myarray array_str;
    v_str varchar2(4000) default str;
    begin
      for i in 0 .. length(str)-length(replace(str,'|',''))+1 loop      if instr(v_str,'|') = 0 then 
              myarray(i+1) := v_str ;
          else 
              myarray(i+1) := substr(v_str,0,instr(v_str,'|')-1);       
          end if;
          v_str := substr(v_str,instr(v_str,'|')+1);
      end loop;
      
      for i in 0 ..length(str)-length(replace(str,'|','')) loop
          dbms_output.put_line(myarray(i+1));
      end loop ;
    end substring_array;
    SQL> exec substring_array('asddd|aa|dfds|fsdsf|sdfaf|dsfsaf|ssss|dffds|fsdfd');asddd
    aa
    dfds
    fsdsf
    sdfaf
    dsfsaf
    ssss
    dffds
    fsdfdPL/SQL procedure successfully completed