`
liumiao2011
  • 浏览: 50717 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]oracle的split函数

 
阅读更多

PL/SQL 中没有split函数,需要自己写。

  代码:

 

create or replace type type_split as table of varchar2(4000);  --创建一个  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(4000) := 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 t.column_value col from table(split('northsnow,塞北的雪',',')) t;

COL

--------------------------------------------------

northsnow

塞北的雪

SQL> 


补充: 
-----PIPELINED关键字是什么意思? 
---- pipe row是什么意思?

pipelined声名此function是pipe的,如果这么声名了,就必须使用pipe row的方式把数据返回,常规函数最后的"return 变量",就变成了"return". 

pipelined的function主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互. 

分享到:
评论

相关推荐

    Oracle中实现Split函数功能

    本文档详细介绍了如何在Oracle数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。

    oracle split函数

    oracle split函数,内有两种实现方式,可直接返回多行记录如: 传入参数: SELECT * FROM TABLE(mm_split('中国,be,c,de',',')); 返回四条记录: 中国 be c de

    oracle_split_函数_返回数组

    最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...

    Oracle 自定义split 函数实例详解

    Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格个数不定。 源代码: CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR...

    oracle split 函数

    实现oracle中 分割字符串的功能,返回一个表。 比如:abc;cde;dfd;133 select * from table(split('abc;cde;dfd;133')) 可以返回 abc cde dfd 133

    用Pipelined Table实现split函数的示例

    用Pipelined Table实现split函数的示例

    Oracle,Split

    Oracle,类似.Net中的Split函数 Oracle,类似.Net中的Split函数

    oracle数据库自定义split函数和调用具体实现

    Oracle 自定义函数需求有个字段,工号JOB_NUMBER ='10202804/10133066/10131810',数据库里是编号,所有想写个函数,将JOB_NUMBER 传递进去,然后返回 '张三/李四/王五',如果王五不存在则返回昵称拼接code '张三/...

    F_SPLIT-字符函数.sql

    oracle自定义函数,字符串分解,可按分隔符分解字符串,分隔符可自己随便定义,非常灵活。欢迎下载。

    oracle字符串分割自定义函数

    oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...

    Oracle拆分字符串,字符串分割的函数

    Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。

    给Oracle添加split和splitstr函数的方法

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理

    Oracle 姓名自动拆分为汉语拼音函数

    Erp/Ehr/Crm/Clm系统的开发者很多时候会用到姓名拆分为汉语拼音的代码。 这个函数可以帮你实现以下内容。...select fn_getpy( F_namesplit('张三',1),2) as 姓,fn_getpy( F_namesplit('张三',2),2) as 名 from dual

    详解oracle管道函数的用法(一行拆为多行)

    oracle管道函数是一类特殊的函数,oracle管道函数返回值类型必须为集合 如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。 关键字PIPELINED表明这是一个...

    添加split和splitstr函数-oracle培训.pdf

    。。。

    添加split和splitstr函数-oracle培训.docx

    。。。

    oracle 函数判断字符串是否包含图片格式的实例代码

    首先是写一个分割字符串的函数,返回table类型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split IS j INT := 0; i INT := 1; len INT := 0; len1 INT...

    oracle 10g问题总结

     select text from all_source where owner=user and name='SF_SPLIT_STRING'  查看表字段  select cname from col where tname='ZW_YINGYEZ'  select column_name from user_tab_columns where table_name='...

Global site tag (gtag.js) - Google Analytics