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

Oracle的split

阅读更多
首先,Oracle是没有split函数的,因为Oracle看不到和数组类似的结构,因此这里参照网上的fn_split的函数做了点改进,下面的可以直接用
--网上的fn_split好像过滤掉null值,这里做了点改进,请注意区别


1.create or replace type ty_str_split is table of varchar2 (4000);   
2.create or replace function fn_split (p_str in varchar2, p_delimiter in varchar2)   
3.    return ty_str_split   
4.is  
5.    j int := 0;   
6.    i int := 0;   
7.    getLen int :=0;   
8.    len int := 0;   
9.    len1 int := 0;   
10.    str varchar2 (4000);   
11.    str_split ty_str_split := ty_str_split ();   
12.    v_isFound number:=0;   
13.begin  
14.    if p_delimiter is not null then  
15.        select instr(p_str,p_delimiter) into v_isFound from dual;   
16.        if v_isFound=0  then--没找到   
17.            str_split.extend;   
18.            str_split (str_split.count) := p_str;   
19.        else  
20.            len := length (p_str);   
21.            len1 := length (p_delimiter);   
22.            while j <= len   
23.            loop   
24.                i:=i+1;   
25.                j := instr (p_str, p_delimiter,i);   
26.                getLen:=j-i;   
27.  
28.                if j = 0  then  
29.                    str := substr (p_str, i);   
30.                    str_split.extend;   
31.                    str_split (str_split.count) := str;   
32.                    exit;   
33.                else  
34.                    str := substr (p_str, i, getLen);   
35.                    str_split.extend;   
36.                    str_split (str_split.count) := str;   
37.                    i := j-1 + len1;   
38.                    end if;   
39.            end loop;   
40.        end if ;   
41.    else  
42.        str_split.extend;   
43.        str_split (str_split.count) := p_str;   
44.    end if ;   
45.    return str_split;   
46.end fn_split;   
47.  
48.--具体用法   
49.select t.column_value,rownum row_ from  
50.table(   
51.    cast (   
52.        fn_split ('1,2,3,4,5,,7,,', ',') as ty_str_split   
53.    )   
54.) t  


转载:http://zyj0021.iteye.com/blog/816633
分享到:
评论

相关推荐

    oracle split函数

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

    Oracle中实现Split函数功能

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

    oracle_split_函数_返回数组

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

    Oracle,Split

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

    Oracle 分割字符串 返回多行数据

    Oracle 分割字符串 返回多行数据

    oracle split 函数

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

    oracle ebs Split An Order Line

    oracle ebs Split An Order Line.

    Oracle 自定义split 函数实例详解

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

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

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

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

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

    Oracle.RMAN.11g.Backup.and.Recovery.2010(Oracle RMAN 11g 备份和恢复)

    Use Oracle Real Application Clusters and synch and split technology For a complete list of Oracle Press titles, visit www.OraclePressBooks.com Table of contents Preliminary Contents Subject to Change...

    用Pipelined Table实现split函数的示例

    用Pipelined Table实现split函数的示例

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

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

    F_SPLIT-字符函数.sql

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

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

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

    oracle字符串分割自定义函数

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

    ORACLE OSB开发指南

    ORACLE OSB开发指南,英文版。 目录: Part I IDE Help for Oracle Service Bus 1 Introduction to Oracle Service Bus 2 Tasks Working with Projects, Folders, Resources, and Configurations .....................

    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