ORACLE 中字串轉換為陣列的函式方法
CREATE OR REPLACE TYPE splitArray AS TABLE OF VARCHAR2(2048); --------字串拆分函式 CREATE OR REPLACE FUNCTION fu_split_Array ( str IN VARCHAR2,--輸入的字串 split_param IN VARCHAR2 --拆分的引數 ) RETURN splitArray IS split_array splitArray := splitArray();--定義拆分陣列 t_temp VARCHAR2(2048); t_begin number :=0;--迴圈變數開始引數 t_end number := 1;--擷取字元長度的開始位置結束引數 t_length number :=0;--字串的長度 t_paramLength number :=0;--傳入字串擷取引數的長度 BEGIN t_length := length(str);--獲取傳入字元的長度 t_paramLength := length(split_param);--擷取引數的長度 --在temp 變數中查詢 split_param 檢索當前split_param字串的位置 如果沒有找到則返回0 WHILE t_begin < t_length LOOP dbms_output.put_line('擷取='||t_begin); --起始位置從1開始擷取匹配split_param字串並返回他所在的位置 t_begin := instr(str,split_param,t_end); /* IF t_begin = 0 THEN Dbms_Output.put_line('見到了'); t_begin := t_length; t_temp := SUBSTR (str, t_end); split_array.extend; split_array (split_array.count) := str; IF t_end >= t_length THEN Dbms_Output.put_line('見到了11111111111'); EXIT; END IF; ELSE*/
--測試
SELECT fu_split_Array('A,B,C,D,E,',',') FROM DUAL;
備註 :如果你的字串最後一位含有分隔符例如“,”之類的標示 則使用紅色未註釋部分
如果你的字串最後一位沒有標記 則使用橘色註釋部分程式碼 則返回所有的字串你就需要重新擷取最後一位了目前
我只瞭解這些 還在測試階段 完善了全部黏貼出來 謝謝!希望對您有幫助!