本函数可以将“目标字符串”以“指定字符串”进行拆分,并通过表结构返回结果。代码如下:
CREATE OR REPLACE TYPE oracle_String_Split_Table IS TABLE OF VARCHAR2 (4000);
CREATE OR REPLACE FUNCTION oracle_String_Split (p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
RETURN oracle_String_Split_Table
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END oracle_String_Split;
select * from table(oracle_String_Split ('Hello,Cnblogs!',','));
将行转为列显示:
select a.column_value v1,b.column_value v2 from
(select * from (select rownum rn,t.* from table(oracle_String_Split ('Hello,Cnblogs!',',')) t)) a,
(select * from (select rownum rn,t.* from table(oracle_String_Split ('Hello,Cnblogs!',',')) t)) b
where a.rn=1 and b.rn=2
Oracle/PLSQL:FUNCTION oracle_String_Split 拆分字符串函数
最新推荐文章于 2024-05-01 12:06:59 发布