1. 程式人生 > >oracle怎麼切割一個指定的字串按指定的標誌符分割成字元陣列

oracle怎麼切割一個指定的字串按指定的標誌符分割成字元陣列

比方說你從資料庫中查出來的資料是一個字串,是有,隔開的多個字串,這方法是極好的大笑。首先定義一個分割函式,具體如下L

CREATE OR REPLACE FUNCTION f_strsplit (STRING VARCHAR2, substring VARCHAR2)
   RETURN varchar2varray
IS
   len       INTEGER        := LENGTH (substring);
   lastpos   INTEGER        := 1 - len;
   pos       INTEGER;
   num       INTEGER;
   i         INTEGER        := 1;
   ret       varchar2varray := varchar2varray (NULL);
   v_str     VARCHAR2 (100);
 /**自定義split函式,將指*/
BEGIN
   LOOP
      pos := INSTR (STRING, substring, lastpos + len);

      IF pos > 0
      THEN                                                            --found
         num := pos - (lastpos + len);
      ELSE                                                         --not found
         num := LENGTH (STRING) + 1 - (lastpos + len);
      END IF;

      IF i > ret.LAST
      THEN
         ret.EXTEND;
      END IF;

      v_str := SUBSTR (STRING, lastpos + len, num);
      --DBMS_OUTPUT.put_line (v_str);

      ret(i) := v_str;

      EXIT WHEN pos = 0;
      lastpos := pos;
      i := i + 1;
   END LOOP;

   RETURN ret;
END;

下面是他的使用L

使用:
先建立一個數組型別:CREATE OR REPLACE TYPE Varchar2Varray IS VARRAY(100) of VARCHAR2(50)

SELECT *   FROM TABLE (CAST (f_strsplit ("取出那個欄位的值",',') AS varchar2varray ) )

ok 問題解決,如有需要還會再補充的。