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

2016-02-19 15:43 7 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享oracle 实现 split 函数 (返回数组)吧。

【 tulaoshi.com - 编程语言 】

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

源代码:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

来源:http://www.tulaoshi.com/n/20160219/1610257.html

延伸阅读
标签: Web开发
假设数据库内容有id=1,name=name1,id=2,name=name2.。。。 sql查询后的字符串是 1,name1;2,name2;........ 每条记录以分号;分隔 每条记录的字段以逗号,分隔。 //---------------------------------------------------------------------------------------htmlhead/headbodyscriptlanguage="javascript"fun...
标签: PHP
  函数名称:array_multi2single 函数原形:array array_multi2single(array) 实现功能:把一个多维数组的数值存放到一维数组中,不保存Key。 <?php function array_multi2single($array) {     static $result_array=array();     foreach($array as $value)    &n...
Oracle日期函数用于对Oracle数据库中的日期及时间进行处理,下面就为您详细介绍Oracle日期函数的用法,希望对您能有所启迪。 (1)SYSDATE和TRUNC 两个Oracle日期函数取Oracle服务器系统的日期和截掉小数部分的功能。观察以下操作: create table test_date (name varchar2(20), p_date date); insert into test_date values(‘name1',sys...
第 12 章 分析函数 12.1 分析函数如何工作 语法 FUNCTION_NAME(参数,…) OVER (PARTITION BY 表达式,… ORDER BY 表达式 ASC | DESC NULLS FIRST | NULLS LAST WINDOWING子句) PARTITION子句 ORDER BY子句 WINDOWING子句 缺省时相当于RANGE UNBOUNDED PRECEDING 1. 值域窗(RANGE...
如执行:"2|33|4".split("|") 出来的结果是: "" 2 3 3 4 奇怪吧,不过注意看一下API说明还是知道原因的. java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。 stringObj.split([separator,[limit]]) 参数 stringObj 必选项。要被分解的 String 对象或文字。该对象不会被 split 方法...

经验教程

494

收藏

100
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部