Oracle 拆分字符串函数
2012-10-20 14:47 Ferdinand 阅读(2630) 评论(0) 编辑 收藏 举报在将图形系统的数据保存的DCOM方式转化为数据库底层直接操作的过程中,需要保留以前的批量的插入和删除功能,这其中就会涉及到将传入的字符串进行拆分然后利用ORA 的存储过程进行批量处理。在此记录下字符串拆分函数:
1: create or replace function split_str(var_str in varchar2,
2: var_split in varchar2)
3: /****************************************************
4: 注意 先执行下面语句 创建类型
5: create or replace type t_ret_table is table of varchar2(100)
6:
7: ** 函数名称:split_str
8:
9: ** 参 数:【名称】 【类型 】 【说明】
10: ** var_str varchar2 要拆分的字符串
11: ** var_split varchar2 字符串分隔符
12: ** 返 回 值: t_ret_table CURSOR 拆分后数据集合
13: ** 摘 要:拆分字符串
14:
15: 调用 举例:
16: select * from table(split_str('A-B-C','-'))
17: ****************************************************/
18:
19: return t_ret_table is
20:
21: var_out t_ret_table;
22: var_tmp varchar2(4000);
23: var_element varchar2(4000);
24:
25: begin
26: var_tmp := var_str;
27: var_out := t_ret_table();
28: --如果存在匹配的分割符
29: while instr(var_tmp, var_split) > 0 loop
30: var_element := substr(var_tmp, 1, instr(var_tmp, var_split) - 1);
31: var_tmp := substr(var_tmp,
32: instr(var_tmp, var_split) + length(var_split),
33: length(var_tmp));
34: --var_out.extend(1);
35: var_out.extend;
36:
37: --重新设置var_element值
38: var_element:=substr(var_element,instr(var_element,'>',1)+1);
39: var_out(var_out.count) := var_element;
40:
41: --打印
42: --SET SERVEROUT ON;
43: DBMS_OUTPUT.PUT_LINE(var_element);
44: --打印
45:
46: end loop;
47:
48: --var_out.extend(1);
49: var_out.extend;
50: var_out(var_out.count) := var_tmp;
51:
52: return var_out;
53: end split_str;
成功不是得到多少东西,而是把身上多余的东西的扔掉多少。