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

本文介绍了一个使用PL/SQL编写的存储过程,该过程能够将包含逗号分隔的ID列表的字符串拆分成多个独立的元素,并存储结果。通过循环和字符串操作函数实现了这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值