1. 程式人生 > >oracle資料庫自定義split函式

oracle資料庫自定義split函式

--dba授予建立型別的許可權
 grant CREATE ANY TYPE to userName;
--普通使用者建立
CREATE OR REPLACE TYPE type_str IS TABLE OF VARCHAR2 (100) ;
 -- 再建立split函式,程式碼如下:
CREATE
OR REPLACE FUNCTION SPLIT (
    p_str VARCHAR2,
    p_delimiter VARCHAR2 DEFAULT ','
) RETURN type_str IS rs type_str := type_str () ; l_str VARCHAR2 (4000
) := '' ; l_len NUMBER := 0 ; BEGIN l_str := p_str ; l_len := LENGTH (p_delimiter) ; while LENGTH (l_str) > 0 loop IF INSTR (l_str, p_delimiter) > 0 THEN rs. EXTEND ; rs (rs. COUNT) := SUBSTR ( l_str, 1, INSTR (l_str, p_delimiter) - 1 ) ; l_str := SUBSTR ( l_str, INSTR (l_str, p_delimiter) + l_len ) ; ELSE
rs. EXTEND ; rs (rs. COUNT) := l_str ; exit ; END IF ; END loop ; RETURN rs ; END ; -- 測試 SELECT COLUMN_VALUE FROM TABLE ( SPLIT ('1001,1002,1003', ',') ) ; SELECT TO_NUMBER (COLUMN_VALUE) FROM TABLE (SPLIT('1001,1002,1003')) ;