oracle怎麼切割一個指定的字串按指定的標誌符分割成字元陣列
阿新 • • 發佈:2018-12-31
比方說你從資料庫中查出來的資料是一個字串,是有,隔開的多個字串,這方法是極好的。首先定義一個分割函式,具體如下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 問題解決,如有需要還會再補充的。