Oracle 行转列 的拆分方法
1、行专列函数
CREATE OR REPLACE FUNCTION SPLIT_STR(P_STRING VARCHAR2, P_SEP VARCHAR2 := ',') RETURN TYPE_SPLIT PIPELINED IS /* 创建TYPE类型 CREATE OR REPLACE TYPE TYPE_SPLIT AS TABLE OF VARCHAR2 (4000); 使用方法 SELECT * FROM T1D_FETR_SQL T ,TABLE(SPLIT_STR(T.EXEC_SQL,' ')) T1 WHERE T.EXEC_SQL LIKE '%TRUNCATE%'; */ IDX PLS_INTEGER; V_STRING VARCHAR2(4000) := P_STRING; BEGIN LOOP IDX := INSTR(V_STRING, P_SEP); IF IDX > 0 THEN PIPE ROW(SUBSTR(V_STRING, 1, IDX - 1)); V_STRING := SUBSTR(V_STRING, IDX + LENGTH(P_SEP)); ELSE PIPE ROW(V_STRING); EXIT; END IF; END LOOP; END SPLIT_STR;
2、调用方法
SELECT * FROM TMP_TAB_NAME T, TABLE(SPLIT_STR(T.EXSQL, ',')) T1
自动化学习。