oracle 10g字符串分割处理

在做项目的过程中,遇到有这样的一个需求,需要对一个字符串进行分割处理,如:字符串:“1,2,3,4,5,”,需要得到结果:1 2 3 4 5。于是我就写了一个存储过程来实现,存储过程如下:

CREATE OR REPLACE PROCEDURE T_MS_SplitString
(
   t_Source      IN    VARCHAR2,        --源字符串
   t_Separator   IN    VARCHAR2,         --分隔字符串
   t_StrLeft     OUT   VARCHAR2, --分隔字符串左边的字符串
   t_StrRight    OUT   VARCHAR2  --分隔字符串右边的字符串
)
AS
SeparatorLen   NUMBER;             --分隔符长度
CharIndex      NUMBER;                    --分隔符起始位置
BEGIN
   t_StrLeft := '';
   t_StrRight := t_Source;
   --函数:INSTR(t_Source, t_Separator);表示 t_Separator在t_Source第一次出现的位置
   CharIndex := INSTR(t_Source, t_Separator);
   IF CharIndex > 0
    THEN
     t_StrLeft := SUBSTR(t_Source,1,CharIndex -1);
     SeparatorLen := LENGTH(t_Separator);
     t_StrRight := SUBSTR(t_Source,CharIndex +SeparatorLen);
   END IF;
END T_MS_SplitString;

调用代码如下:

           --定义变量

          Recipients NVARCHAR2(800);--短讯接收人员ID串
          RecipientsValue NVARCHAR2(20);--短讯接收人员ID

          --获取系统设置的短讯接收人员
          SELECT ParamSet_Param9 INTO Recipients FROM T_BIM_PARAMSET;
          --调用存储过程 T_MS_SplitString 分割字符串,取得短讯接收人员ID
          WHILE Recipients IS NOT NULL
          LOOP
             T_MS_SplitString(Recipients, ',' ,RecipientsValue,Recipients); --T_MS_SplitString(源字符串,分割字符串,分割出来的字符值,剩余字符串值)

             Dbms_Output.put_line(RecipientsValue); --输出值

          END LOOP;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值