一个用作撕碎字符串的PL/SQL工具函数(Oracle 10g)
2012-06-20 19:12
417 查看
create or replace function f_tool_splt2arr(p_src in varchar2, p_sub in varchar2 default ',', p_regflag in number default 0) return dbms_utility.lname_array is /*********************************************************************** 将字符串撕成碎片,以数组的形式返回,支持正则表达式方式撕碎 作者:xxx 日期:2012年6月20日 参数: in p_src 输入的待撕碎字符串 p_sub 用于撕碎的定位子串 p_regflag 是否启用正规表示式方式撕碎,0_不启用,1_启用 返回值: v_retarr 返回撕碎后的数组,可用作调用者迭代 ***********************************************************************/ v_retarr dbms_utility.lname_array; c_pos number := 0; p_pos number := 1; ind number := 1; begin if p_regflag = 0 then while instr(p_src, p_sub, p_pos, 1) > 1 loop c_pos := instr(p_src, p_sub, p_pos, 1); v_retarr(ind) := substr(p_src, p_pos, c_pos - p_pos - length(p_sub) + 1); p_pos := c_pos + length(p_sub); ind := ind + 1; end loop; v_retarr(ind) := substr(p_src, p_pos); else while regexp_instr(p_src, p_sub, p_pos, 1, 0) > 1 loop c_pos := regexp_instr(p_src, p_sub, p_pos, 1, 0); v_retarr(ind) := substr(p_src, p_pos, c_pos - p_pos); p_pos := regexp_instr(p_src, p_sub, p_pos, 1, 1); ind := ind + 1; end loop; v_retarr(ind) := substr(p_src, p_pos); end if; return v_retarr; end f_tool_splt2arr;
调用示例
declare a dbms_utility.lname_array; begin a := f_tool_splt2arr('abc123sdjfk88dkjff9kjkj123123mmmm','[0-9]+',1); for i in a.first .. a.last loop dbms_output.put_line(i); dbms_output.put_line(a(i)); end loop; end;
相关文章推荐
- 1、Oracle PL/SQL中的字符串及函数介绍
- Oracle(20)pl/sql编程 过程、函数、包以及触发器概念
- Oracle PL/SQL函数大全(3)
- win7 64系统安装oracle客户端使用PL/SQL Developer工具
- Oracle Sql 中常用字符串处理函数
- 精通Oracle 10g Pl/SQL编程
- Oracle 10g绿色客户端 plus PL/SQL Developer-搭建方便的Oracle客户端使用环境
- Oracle 10G:PL/SQL正规表达式(正则表达式)手册
- Oracle 在存储过程或函数中执行字符串sql
- oracle pl/sql 函数
- ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
- 使用oracle 的 PL/Sql 定时执行一个存储过程
- oracle实验31:使用PL/SQL,书写一个最简单的块
- oracle pl/sql之oracle函数
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- Oracle pl/sql学习 之 子程序 过程和函数 存储过程 存储函数
- PL/SQL Enhancements in Oracle Database 10g
- Oracle PL/SQL之GROUPING 函数
- Oracle PL/SQL过程与函数hell…
- oracle sql 字符串去除重复字符函数