`
123003473
  • 浏览: 1076914 次
  • 性别: 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 函数详解 #### 一、Oracle Split 函数简介 在Oracle数据库中,并没有内置的split函数来处理字符串的分割操作。然而,在实际应用中,经常需要将一个包含多个值的字符串按照指定的分隔符进行拆分,...

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能 Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,...

    oracle split 函数

    ### Oracle Split函数实现与应用 #### 一、Oracle Split函数简介 在Oracle数据库中,处理字符串是一项常见的需求,尤其是在需要将包含特定分隔符的字符串分割成多个独立的部分时。Oracle标准SQL并没有提供直接用于...

    oracle_split_函数_返回数组

    在Oracle数据库中,由于内置函数不直接支持像Java中的`split`那样拆分字符串并返回数组,因此开发者需要自定义函数来实现这一功能。这里提到的两种方法都是为了解决这个问题,即根据指定的分隔符将字符串拆分为一个...

    Oracle,Split

    ### Oracle Split功能详解 在Oracle数据库管理中,有时我们需要对字符串进行分割处理,这与.NET框架中的`Split`函数有着相似的功能。本文将详细介绍如何在Oracle中实现类似于.NET中的`Split`函数,并通过一个具体的...

    Oracle函数:根据自定义分隔符拆分字段SPLIT-STR()然后查询检索数据库表数据

    4、易于集成:函数设计简洁,易于集成到现有的Oracle数据库系统中,无需复杂的配置和改造。 5、优化查询性能:通过避免复杂的子查询和嵌套循环,我们的函数显著提升了数据处理的速度,减少了数据库资源的消耗,让您...

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

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

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

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

    Oracle 自定义split 函数实例详解

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

    oracle ebs Split An Order Line

    在Oracle E-Business Suite(EBS)中,订单管理模块的订单行分割是一个常见需求,尤其是当一个订单行需要被分解成多个部分来处理时。文档中描述的脚本基于OE_ORDER_PUB包,该包是Oracle Order Management的一部分。...

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

    在Oracle数据库中,由于默认的SQL语法并不支持像JavaScript或.NET框架中那样直接对字符串进行`split`操作,所以在处理批量操作时,需要通过自定义函数来实现类似的功能。这里介绍的方法是创建两个用户自定义函数,即...

    用Pipelined Table实现split函数的示例

    通过本示例,我们了解了如何使用Oracle中的Pipelined Table Function来实现一个高效的split函数。这种方法不仅可以简化字符串处理的任务,还可以显著提高处理大量数据时的性能。在实际应用中,根据不同的需求,我们...

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

    在Oracle数据库中,有时我们需要对字符串进行拆分处理,以便于处理包含多个元素的数据。例如,在给定的场景中,有一个名为`JOB_NUMBER`的字段,它存储的是多个工号,以特定的分隔符(如斜杠"/")分隔。需求是创建一...

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

    在本文中,我们将探讨如何在Oracle中添加`split`和`splitstr`这两个自定义函数,以优化批量操作的性能。 首先,我们需要创建一个名为`tabletype`的表类型,用于存储分割后的字符串元素: ```sql create or replace...

    关于oracle11g数据库备份存在空间不足解决办法.docx

    split -b 100m exp_jtkg20210103.dmp.gz exp_jtkg20210103.dmp.gz.split 4. 使用外部存储设备 使用外部存储设备来存储备份文件。例如,可以使用 USB 硬盘或 NAS 设备来存储备份文件。 5. 优化数据库结构 优化...

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

    总的来说,`split`和`splitstr`函数是Oracle数据库中处理字符串的强大工具,它们提供了灵活且高效的字符串处理能力,尤其适用于需要批量处理字符串数据的场景。在实际工作中,根据具体需求定制类似的函数可以显著...

    F_SPLIT-字符函数.sql

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

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

    在Oracle数据库中,处理字符串是常见的操作之一,尤其是在数据分析或数据清洗的过程中。有时我们需要将一个长字符串分割成多个部分,以便进行进一步的操作。Oracle提供了一些内置的函数来帮助我们完成这个任务。本篇...

    Oracle 11gR2 RAC 进程说明

    例如,LMSn和LMDn进程协作处理节点故障检测和资源迁移,而CSSn进程则确保所有节点之间的同步,防止“分割脑”(Split Brain)现象的发生,即集群的一部分认为另一部分已脱离,而实际上网络只是暂时中断。 ### 总结 ...

Global site tag (gtag.js) - Google Analytics