1. 程式人生 > >ORCLE SQL擷取某字串中的最後一個之後的字串

ORCLE SQL擷取某字串中的最後一個之後的字串

create or replace procedure SP_MID_SPLIT_STRING_SP(out_name out varchar2, permIds in varchar2) is
--permIds的格式 如:5,8,9,45,56,78 ,E:\Tomcat6-test\webapps\ivrcm\afVoiceLib\14120.wav
  p_start        number; --開始的指標,這個為依次增加的,記錄","的個數
  l_position1    number; --起始位置
  l_position2    number;
  sub_string     VARCHAR2(50); --每次得到的子串
  l_lastPosition number;
begin
  out_name := '';

  p_start     := 1;
  l_position1 := 1;
  l_lastPosition:= 0;
  loop

    l_position2 := instr(permIds, '\', 1, p_start); --l_position2 找到“\”的位置
    exit when l_position2 = 0;
    /* l_position2 - l_position1 為擷取長度*/
    sub_string := substr(permIds, l_position1, l_position2 - l_position1);

    if (l_position2 != 0) then
      l_lastPosition := l_position2+1; --記錄倒數第二次l_position2的位置,以方便求得最後一個許可權
    end if;
    l_position1 := l_position2 + 1;
    p_start     := p_start + 1;
  end loop;
 --找出最後一個
  if (l_lastPosition!= length(permIds)) then
  --  l_lastPosition:=l_lastPosition+1;
    sub_string := substr(permIds, l_lastPosition, length(permIds));
    out_name:=sub_string;

  end if;

end SP_MID_SPLIT_STRING_SP;