码迷,mamicode.com
首页 > 数据库 > 详细

oracle的split函数

时间:2015-03-20 12:43:19      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

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主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互. 

oracle的split函数

标签:

原文地址:http://www.cnblogs.com/wnlja/p/4353299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!