ITPub博客

首页 > 数据库 > Oracle > oracle将字符串截断成数组,类似jquery的split的用法

oracle将字符串截断成数组,类似jquery的split的用法

Oracle 作者:hunterworld 时间:2014-06-24 11:14:29 0 删除 编辑

我的<>,欢迎观看: http://edu.51cto.com/lecturer/index/user_id-1850277.html

首先,这是最近在公司执行一个任务的时候遇到的情况,分享一下,代码来源于互联网,非原创。
 如果你的存储过程的参数个数不定,比如你要处理A条件、B条件2种情况,或者A条件、C条件、F条件的情况,
 每次的条件的个数和条件都是变动的,这样你的存储过程参数就不好做。这种情况下,你可以只输入一个参数,
 多个条件用特殊字符如逗号分隔,然后对这个条件截断拆分之后循环处理,类似于jquery的split方法。然而,oracle
并没有这样的函数,你需要自己编写,以下是收录的一个有用的将oracle字符串截断成数组(oracle复合数据类型)的function。

create or replace function f_split_string (var_str varchar2,var_split varchar2)
 return t_ret_table

is
 var_out t_ret_table; --定义变量
var_tmp varchar2(100);
 var_element varchar2(100);

begin
 var_tmp := var_str;
 var_out := t_ret_table();
--如果存在匹配的分割符
while instr(var_tmp,var_split)>0 loop
var_element:=substr(var_tmp,1,instr(var_tmp,var_split)-1);
 var_tmp := substr(var_tmp,instr(var_tmp,var_split)+length(var_split),length(var_tmp));
 var_out.extend(1);
 var_out(var_out.count) := var_element;
 end loop;
 var_out.extend(1);
 var_out(var_out.count) := var_tmp;
 return var_out;
 end f_split_string;

在代码里,uni_array是一个table of varchar2的数组,就可以uni_array:=f_split_string('aa,bb,cc,dd',',')
将aa、bb、cc、dd四个元素装入uni_array,然后循环处理。

我的<>,欢迎观看: http://edu.51cto.com/lecturer/index/user_id-1850277.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29102572/viewspace-1192390/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-07

  • 博文量
    5
  • 访问量
    153838