谁帮帮我啊,帮我写一个函数,要求是这样的。我在库里面取某个字段的值是这个的格式的:[0]X[/0][1]XX[/1][2]XXX[/2],我现在想直接取某部分的值啊。比如我想取[1]xx[/1]里面的值,直接在sql中写一个函数就可以取得xx了。。多谢了!

解决方案 »

  1.   

    create or replace function uf_substr(av_strin in varchar2,av_num in number) return varchar2 is
    v_pos_start number;
    v_pos_end number;
    v_len number;
    v_des1 varchar2(8);
    v_des2 varchar2(8);
    v_return varchar2(255);
    begin
    v_des1:='['||av_num||']';
    v_des2:='[/'||av_num||']';
    v_pos_start:=instr(av_strin,v_des1) + 3;
    v_pos_end:=instr(av_strin,v_des2) - 1;
    v_len:=v_pos_end - v_pos_start +1;
    v_return:=substr(av_strin,v_pos_start,v_len);
    return v_return;
    end;select uf_substr('[1]123[/1][2]sdfsdf[/2][3]234sf[/3][4]sdfs34sdf[/4]',2) from dual;UF_SUBSTR('[1]123[/1][2]SDFSDF
    --------------------------------------------------------------------------------
    sdfsdf还要加工一下,不知道 能不能满足你的要求!
      

  2.   

    把+3改为+LENGTH(v_des1)可能会更好一点.