网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.Oracle 最常用功能函数经典汇总.
.Oracle 10g,跨Resetlogs时间点恢.
.轻松六步使你的Oracle存储过程迅.
.Oracle笔记-优化器计划稳定性.
.轻轻松松教Linux(上)--软体启动.
.教你快速掌握解决RMAN-06026错误.
.用Oracle和SQL Server数据库组合.
.Oracle的恢复管理器及DBMS_JOB包.
.Oracle 8.0.4 for Windows NT的安.
.Linux Shadow-Password-HOWTO.
.ORACLE在HP-UX下的系列问题处理(.
.如何更改数据库的SCN?.
.关于回滚机制的一些测试.
.SQLPlus命令使用指南(二).
.Qmail如何做域名伪装.
.如何从备份集中恢复归档日志.
.ORACLE SQL性能优化 (上)(1).
.10gR2使用RMAN恢复临时表空间的增.
.Oracle9i专题讲座精华集粹.
.Oracle数据操作和控制语言详解(1).

oracle 实现 split 函数 (返回数组)

发表日期:2007-9-7


功能描述:用指定分隔符切割输入的字符串,返回一维数组,每个数组元素为一个子串。

源代码:

 

CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);

CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
  RETURN ty_str_split
IS
  j INT := 0;
  i INT := 1;
  len INT := 0;
  len1 INT := 0;
  str VARCHAR2 (4000);
  str_split ty_str_split := ty_str_split ();
BEGIN
  len := LENGTH (p_str);
  len1 := LENGTH (p_delimiter);

  WHILE j < len
  LOOP
    j := INSTR (p_str, p_delimiter, i);

    IF j = 0
    THEN
        j := len;
        str := SUBSTR (p_str, i);
        str_split.EXTEND;
        str_split (str_split.COUNT) := str;

        IF i >= len
        THEN
          EXIT;
        END IF;
    ELSE
        str := SUBSTR (p_str, i, j - i);
        i := j + len1;
        str_split.EXTEND;
        str_split (str_split.COUNT) := str;
    END IF;
  END LOOP;

  RETURN str_split;
END fn_split;
/

测试:

DECLARE
  CURSOR c
  IS
    SELECT *
      FROM TABLE (CAST (fn_split ('1;;12;;123;;1234;;12345', ';;') AS ty_str_split
                  )
              );

  r c%ROWTYPE;
BEGIN
  OPEN c;

  LOOP
    FETCH c INTO r;

    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.put_line (r.column_value);
  END LOOP;

  CLOSE c;
END;
/
 


结果:
1
12
123
1234
12345

上一篇:Oracle 排序中常用的NULL值处理方法 人气:2184
下一篇:Oracle 10G - 增强的CONNECT BY子句 人气:1890
浏览全部split 函数的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐