编写一个小函数输入条件为一字符串‘aaaa/bbb/cccc/ddd’
把‘/’分割的且是四位字母的找出来,并重新拼接逗号分割。入上面结果应为:aaaa,cccc代码越短越好,谢谢!

解决方案 »

  1.   


    -- Created on 2011/7/22 by hoho
    declare 
      -- Local variables here
      str varchar2(50) := 'aaaa/bbb/cccc/ddd';
      temp_str varchar2(30) := '';
      v_split varchar2(5) := '/';
      indexs integer;
      vresult varchar2(50) := '';
    begin
      
      while instr(str,v_split) > 0
      loop
            indexs := instr(str,v_split);
            indexs:=indexs-1;
            temp_str := substr(str,1,indexs);
            
            if length(temp_str) = 4
               then
                    vresult := vresult ||','||temp_str;
            end if;
            indexs:=indexs+1;
            str:=substr(str,indexs+1);
            
      end loop;
      
      vresult := substr(vresult,2);
      dbms_output.put_line(vresult);
      
    end;
      

  2.   

    还少一个条件IF instr(str,v_split)=0 AND length(str)=4
      

  3.   


    --字符串自己替换一下就ok了
    [SYS@orcl] SQL>SELECT WM_CONCAT(A)
      2    FROM (SELECT REGEXP_SUBSTR('aaaa/bbb/cccc/ddd', '[^/]+', 1, LEVEL) A
      3            FROM DUAL
      4          CONNECT BY LEVEL <= LENGTH('aaaa/bbb/cccc/ddd') -
      5                     LENGTH(REPLACE('aaaa/bbb/cccc/ddd', '/')) + 1)
      6   WHERE REGEXP_LIKE(A, '[a-z|A-Z]{4}')
      7  ;WM_CONCAT(A)
    --------------------------------------------------------------------------------
    aaaa,cccc