Oracle以固定字符截取字符串

CREATE OR REPLACE FUNCTION "F_SPLIT" (p_str IN CLOB, 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 f_split;

 

posted @ 2019-03-29 20:15  王小鹏  阅读(1643)  评论(0编辑  收藏  举报