• oracle | 字符串分割函数


    /**
     * 字符串分割函数.
     * @param P_STR 待分割的字符串
     * @param 分隔符
     * @return 自定义table类型TY_STR_SPLIT.
     * 使用方法 select column_value from table(fn_split('1,2',','))
     * @Author: xDer
     */
    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;
    

      

    /** * 字符串分割函数. * @param P_STR 待分割的字符串 * @param 分隔符 * @return 自定义table类型TY_STR_SPLIT. * 使用方法 select column_value from table(fn_split('1,2',',')) * @Author: xDer */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;

  • 相关阅读:
    JDK 9 发布仅数月,为何在生产环境中却频遭嫌弃?
    MyBatis 延迟加载,一级缓存,二级缓存设置
    mysql jdbc url
    idea中模块累积编写
    Idea中通过Git将代码同步到GitHub
    HomeBrew安装及使用
    (二)Java秒杀项目之实现登录功能
    (一)Java秒杀项目之项目环境搭建
    Spring实现构造注入
    Mybatis动态SQL之使用foreach完成复杂查询
  • 原文地址:https://www.cnblogs.com/xder/p/5152369.html
Copyright © 2020-2023  润新知