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

震古铄今通天下

震古铄今通天下

2016-02-19 15:43

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

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

源代码:

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;

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

  LOOP
    FETCH c INTO r;

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

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

  CLOSE c;
END;
/
 
结果:
1
12
123
1234
12345

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
oracle 实现 split 函数 (返回数组)

未公开的返回数组型函数加速秘诀

编程语言 网络编程
未公开的返回数组型函数加速秘诀

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

delphi中的split函数

编程语言 网络编程
delphi中的split函数

用js实现随机返回数组的一个元素

Web开发
用js实现随机返回数组的一个元素

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

oracle 函数

编程语言 网络编程
oracle 函数

ASP 中 Split 函数的实例

ASP
ASP 中 Split 函数的实例

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

安装Win10 9879导致硬盘丢失的解决方法

安装Win10 9879导致硬盘丢失的解决方法

设置Windows8.1系统不待机的方法

设置Windows8.1系统不待机的方法
下拉加载更多内容 ↓