oracle的split函数
PL/SQL 中沒有split函數,需要自己寫。
代碼:
?
create?or?replace?type?type_split?as?table?of?varchar2(50);??--創建一個 type ,如果為了使split函數具有通用性,請將其size?設大些。
--創建function
create?or?replace?function?split
(
???p_list?varchar2,
???p_sep?varchar2?:=?','
)??return?type_split?pipelined
?is
???l_idx??pls_integer;
???v_list??varchar2(50)?:=?p_list;
begin
???loop
??????l_idx?:=?instr(v_list,p_sep);
??????if?l_idx?>?0?then
??????????pipe?row(substr(v_list,1,l_idx-1));
??????????v_list?:=?substr(v_list,l_idx+length(p_sep));
??????else
??????????pipe?row(v_list);
??????????exit;
??????end?if;
???end?loop;
???return;
end?split;
測試:
?
SQL>?select?*?from?table(split('northsnow,塞北的雪',','));
COLUMN_VALUE
--------------------------------------------------
northsnow
塞北的雪
SQL>?
補充:
-----PIPELINED關鍵字是什么意思?
---- pipe row是什么意思?
pipelined聲名此function是pipe的,如果這么聲名了,就必須使用pipe row的方式把數據返回,常規函數最后的"return 變量",就變成了"return".
pipelined的function主要是為了提高效率,不用等所有的數據都處理完成了才返回客戶端,它是邊處理邊返回.適用于大數據量的交互.
轉載于:https://www.cnblogs.com/linbaoji/archive/2009/09/17/1568252.html
總結
以上是生活随笔為你收集整理的oracle的split函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 亮剑:PHP,我的未来不是梦(5)
- 下一篇: c#如何将一个整数转换二进制,并进行位运