在pl/sql中写一个类似Java中的split函数

本文介绍如何在PL/SQL中自定义一个split函数来处理字符串分割,并演示了使用该函数进行数据处理的方法。此外,还展示了如何定义并操作PL/SQL中的数组。

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

据我了解,PL/SQL 中没有split函数,需要自己写。
create or replace type type_split as table of varchar2(50); --创建一个  type  ,如果为了使split函数具有通用性,请将其size 设大些。


--创建function
create or replace function split
(
p_list varchar2,
p_sep varchar2 := ','
) return type_split pipelined
is
l_idx pls_integer;
v_list varchar2(50) := p_list;
begin
loop
l_idx := instr(v_list,p_sep);
if l_idx > 0 then
pipe row(substr(v_list,1,l_idx-1));
v_list := substr(v_list,l_idx+length(p_sep));
else
pipe row(v_list);
exit;
end if;
end loop;
return;
end split;


SQL> select * from table(split('northsnow,塞北的雪',','));

COLUMN_VALUE
--------------------------------------------------
northsnow
塞北的雪

SQL>


---------------------------------------------------------------------------------------------------------------

PL/SQL中定义数组

declare
type tab_numbers is table of number; -- 定义数组类型
lt tab_numbers; -- 定义一个未初始化的数组
begin
lt := tab_numbers(); -- 初始化一个空数组,无任何元素
lt.extend; -- 扩展数组,扩展一个元素
lt(1) := 100; -- 数组下标从1开始
lt.extend(3); -- -- 扩展数组,扩展3个元素
lt(2) := 1002;
lt(3) := 1003;
lt(4) := 1004;
-- lt(5) := 0; 这里将不允许,因为不存在此下标之元素
for i in 1..lt.count loop -- lt.count 取得数组元素个数
dbms_output.put_line(lt(i));
end loop;
end;
/


转载:http://hi.baidu.com/%BA%C3%D1%F2%BE%CD%BA%C3%D1%F9/blog/item/a42c40f3306939cf0a46e0af.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值