sql保留字符串中的某个字符前面的字符串

create or replace procedure SP_MID_SPLIT_STRING_SP_END(out_name out varchar2, permIds in varchar2) is
--permIds的格式 如:5,8,9,45,56,78
  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;
  SP_MID_SPLIT_STRING_SP_ENDloop

    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-2;
    sub_string := substr(permIds,1 , l_lastPosition);
    out_name:=sub_string;

  end if;

你可能感兴趣的:(sql保留字符串中的某个字符前面的字符串)