利用函数实现split功能
2009-12-23 10:33
369 查看
CREATE or replace TYPE result_split IS TABLE OF VARCHAR (4000); --定义一个数组 数组名称是result_split
create or replace function split_str_function(input_str in varchar,split_str in varchar)--传入需要分离的字符串与分隔符
return result_split --返回值的类型就是result_split数组
is
len number:=length(split_str);
loca number:=0;--定义一个number位置控制变量 找到当前对应的第一个满足切割字符的位置
str_split result_split:=result_split(); --定义个str_split 变量时result_split数组类型 后面的=result_split(); 相当于new了一下
var_str varchar(4000):=input_str;--定义一个临时字符串
begin
loop --循环
loca:=instr(var_str,split_str,1,1); --instr就是从第1个位置开始找var_str中的split_str变量的第一个满足的位置
if(loca>0) then --如果找到了loca就大于0
str_split.EXTEND; --数组拓展 拓展了才能往里面塞值
str_split(str_split.COUNT):=substr(var_str,1,loca+len-1);
var_str:=substr(var_str,(loca+len));
else
str_split.EXTEND;
str_split(str_split.COUNT):=var_str;
exit;
end if;
end loop;
return str_split;
end;
--测试函数是否正确
declare inputstr varchar(40):='lianminshitiancai';
splitstr varchar(40):='an';
resultstr result_split;
i number:=1;
begin
resultstr:=split_str_function(inputstr,splitstr);
loop
dbms_output.put_line(resultstr(i));
i:=i+1;
exit when i=resultstr.COUNT+1;
end loop;
end;
create or replace function split_str_function(input_str in varchar,split_str in varchar)--传入需要分离的字符串与分隔符
return result_split --返回值的类型就是result_split数组
is
len number:=length(split_str);
loca number:=0;--定义一个number位置控制变量 找到当前对应的第一个满足切割字符的位置
str_split result_split:=result_split(); --定义个str_split 变量时result_split数组类型 后面的=result_split(); 相当于new了一下
var_str varchar(4000):=input_str;--定义一个临时字符串
begin
loop --循环
loca:=instr(var_str,split_str,1,1); --instr就是从第1个位置开始找var_str中的split_str变量的第一个满足的位置
if(loca>0) then --如果找到了loca就大于0
str_split.EXTEND; --数组拓展 拓展了才能往里面塞值
str_split(str_split.COUNT):=substr(var_str,1,loca+len-1);
var_str:=substr(var_str,(loca+len));
else
str_split.EXTEND;
str_split(str_split.COUNT):=var_str;
exit;
end if;
end loop;
return str_split;
end;
--测试函数是否正确
declare inputstr varchar(40):='lianminshitiancai';
splitstr varchar(40):='an';
resultstr result_split;
i number:=1;
begin
resultstr:=split_str_function(inputstr,splitstr);
loop
dbms_output.put_line(resultstr(i));
i:=i+1;
exit when i=resultstr.COUNT+1;
end loop;
end;
相关文章推荐
- SQL server实现split功能的函数
- 利用C++11的function和bind功能,实现QStandardItemModel的通用遍历函数
- Python中利用函数装饰器实现备忘功能
- 利用MySQL自带的C API函数实现数据库功能调用
- SQL server实现split功能的函数
- 第四章 利用函数实现指定的功能
- 利用可变参数列表简单实现printf函数的功能
- 在SQL SERVER中实现Split功能的函数,并在存储过程中使用
- sql 实现split功能 的函数
- 实现split功能 的函数
- SQL实现split功能的函数
- SQL实现split功能的函数
- C++学习 【4.1】 利用函数实现指定的功能---函数,函数的形式,函数参数
- 行式填报表利用JS函数实现批量删除功能
- 利用php内置的svn函数实现的根据svn版本号导出相关文件的功能
- 转载sqlserver实现split功能 的函数
- SQL实现类似C#的Split()函数的功能
- SQL Serve中实现字符串分割(split)的功能函数
- 通用排序函数的功能实现(利用接口和委托实现泛型[通用]排序)
- mysql 中自定义实现split功能的函数