zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    【leetcode】7. 反转整数
    【leetcode】496. 下一个更大元素 I
    【leetcode】389. 找不同
    Linux驱动模型解析bus之platform bus
    shell 和进程
    递归调用在循环体内: 把循环展开, 这种情况是先循环再递归
    javascript函数柯里化以及柯里化带来的好处
    Maven测试篇
    关于ECharts Java类库的一个jquery插件
    javascript原型链继承
  • 原文地址:https://www.cnblogs.com/xder/p/5152369.html
Copyright © 2011-2022 走看看