由于oracle中不自帶split分割函數,導致很多情況下需要做字符串分割時束手無策,
下面介紹一個可用的方法。
----首先定義一個type類型type_split_a
create or replace type type_split_a is table of varchar2 (4000);
----定義函數,返回一個管道化的返回值
function split(p_string varchar2, p_sep varchar2 := ',')
return type_split_a
pipelined is
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_a;
---該返回值可以看成一個虛表,我們使用時利用table顯示的查詢即可
select * from table(split('古力娜扎#迪麗熱巴#瑪爾扎哈','#'));
查詢結果如下: