Oracle將以特定分隔的字串轉成表格的方法(用於類似遊標的遍歷)
阿新 • • 發佈:2019-02-15
CREATE OR REPLACE TYPE TY_OBJECT AS OBJECT(COL_NAME VARCHAR2(200)); / CREATE OR REPLACE TYPE TY_TABLE AS TABLE OF TY_OBJECT; / CREATE OR REPLACE FUNCTION STR2TABLE(V_STR IN VARCHAR2, V_DELIMITER IN VARCHAR2) --此函式的目的是將以特定字元分隔的字串轉換為遊標形式,以例遍歷此遊標 RETURN TY_TABLE AS V_TY_TABLE TY_TABLE; BEGIN SELECT TY_OBJECT(REGEXP_SUBSTR(V_STR, '[^' || V_DELIMITER || ']+', 1, LEVEL, 'i')) BULK COLLECT INTO V_TY_TABLE FROM DUAL CONNECT BY LEVEL <= LENGTH(V_STR) - LENGTH(REGEXP_REPLACE(V_STR, '' || V_DELIMITER || '', '')) + 1; RETURN V_TY_TABLE; END; / --應用示例 SELECT * FROM TABLE(STR2TABLE('1,2,3',',')); /