Oracle 实现split 根据特定字符来切割字符串
实现准备
只需要一个type 一个function 就行
创建type
table 类型即可
CREATE OR REPLACE TYPE strsplit_type IS TABLE OF VARCHAR2 (4000)
创建function
create or replace function strsplit(p_value varchar2,p_split varchar2 )
return strsplit_type
pipelined is
v_idx integer;
v_str varchar2(500);
v_strs_last varchar2(4000) := p_value;
begin
loop
v_idx := instr(v_strs_last, p_split);
exit when v_idx = 0;
v_str := substr(v_strs_last, 1, v_idx - 1);
v_strs_last := substr(v_strs_last, v_idx + 1);
pipe row(v_str);
end loop;
pipe row(v_strs_last);
return;
end strsplit;
调用DEMO
SELECT *
FROM (SELECT ROWNUM RNUM, T.* FROM TABLE(STRSPLIT('4010|KY008611001|11|20181224162816|Z00.001|健康查体||综合内科门诊||188|黄永光|0|0|一体机用户||||||||03', '|')) T)
返回如下图: