Oracle Procedure之字符串分隔

本文介绍了一个使用PL/SQL编写的分隔符解析过程,该过程能够从输入字符串中提取出由特定字符分隔的数据片段。通过示例展示了如何循环调用此过程来逐一获取所有数据片段。

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

create or replace procedure tokenizer(iStart in NUMBER,
sPattern in VARCHAR2, sBuffer in VARCHAR2,
sResult out VARCHAR2, iNextPos out NUMBER) is
nPos1 number;
nPos2 number;
begin
nPos1 := Instr(sBuffer, sPattern, iStart);
if nPos1 = 0 then
sResult := NULL;
else
nPos2 := Instr (sBuffer, sPattern, nPos1 + 1);
if nPos2 = 0 then
sResult := Rtrim(Ltrim(Substr(sBuffer, nPos1 + 1)));
iNextPos := nPos2;
else
sResult := Substr(sBuffer, nPos1 + 1, nPos2 - nPos1 - 1);
iNextPos := nPos2;
end if;
end if;
end tokenizer;

--测试tokenizer
create or replace procedure test_tokenizer is
sepr varchar2(1);
sbuf varchar2(200);
sres varchar2(200);
pos number := 1;
istart number;
begin
sbuf := '|Test1|Test2|Test3' || '|Test4';
sepr := '|';
--istart := 1;
--tokenizer(istart, sepr, sbuf, sres, pos);
--if (pos <> 0) then
--dbms_output.put_line (sres);
--end if;
while (pos <> 0)
loop
istart := pos;
tokenizer(istart, sepr, sbuf, sres, pos);
dbms_output.put_line(sres);
end loop;
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值