zoukankan      html  css  js  c++  java
  • oracle 实现 split 函数

    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;

    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

  • 相关阅读:
    Java 自动装箱与拆箱(Autoboxing and unboxing)【转】
    工厂方法和new
    java线程池【转】
    大型网站架构演化过程
    jsp el表达式
    GC垃圾回收
    mysql语句
    String StringBuilder StringBuffer
    粉丝关注数据库表的设计
    ECharts图表之柱状折线混合图
  • 原文地址:https://www.cnblogs.com/lijinchang/p/1891047.html
Copyright © 2011-2022 走看看