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

自己实现的oracle字符串split方法

阅读更多
create or replace package my_utils is
   type split_array is table of varchar2(4000) index by binary_integer;
   --字符串分割
   function fn_split(
            p_str in varchar2,
            p_separator in varchar2
   ) return split_array;
end my_utils;
/
create or replace package body my_utils is
   --字符串分割
   function fn_split(
            p_str in varchar2,
            p_separator in varchar2
   ) return split_array is
     v_str varchar2(4000);
     v_split_array split_array;
     v_index binary_integer := 0;
   begin
     if p_str is null or p_separator is null then
       return v_split_array;
     end if;
     v_str := p_str;
     --先trim前后的p_separator
     if instr(v_str,p_separator,1) = 1 then --如果以p_separator开头则ltrim
       v_str := ltrim(v_str,p_separator);
     end if;
     if instr(v_str,p_separator,-1) = (length(v_str) - length(p_separator) + 1) then ----如果以p_separator结尾则rtrim
       v_str := rtrim(v_str,p_separator);
     end if;
     if length(v_str) = 0 then
       return v_split_array;
     end if;
     while instr(v_str,p_separator) != 0 loop
       if length(substr(v_str,1,instr(v_str,p_separator) - 1)) != 0 then--如果两个p_separator相邻则不加入v_split_array中
         v_index := v_index + 1;
         v_split_array(v_index) := substr(v_str,1,instr(v_str,p_separator) - 1);
       end if;
       v_str := substr(v_str,instr(v_str,p_separator) + length(p_separator));
     end loop;
     if length(v_str) != 0 then
       v_split_array(v_index + 1) := v_str;
     end if;
     return v_split_array;
   end fn_split;
end my_utils;
/

示例:

declare 
  v_split_array my_utils.split_array;
begin
  v_split_array := my_utils.fn_split('java.lang..String.','.');
  dbms_output.put_line('count : ' || v_split_array.count);
  for i in 1 .. v_split_array.count loop
    dbms_output.put_line('index['||i||'] = ' || v_split_array(i));
  end loop;
end;

输出:
count : 3
index[1] = java
index[2] = lang
index[3] = String
分享到:
评论

相关推荐

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能的优点是可以灵活地处理不同的分隔符和字符串长度。同时,这个函数也可以与其他 Oracle 函数和操作符结合使用,以实现更加复杂的数据处理任务。 在实际应用中,Oracle 中实现 Split ...

    oracle_split_函数_返回数组

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

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

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

    oracle split函数

    本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...

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

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

    oracle分隔字符串函数

    ### Oracle 分隔字符串函数知识点详解 #### 一、Oracle 分隔字符串函数介绍 在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助...

    如何实现Oracle中字符串分隔.pdf

    在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据...总的来说,Oracle中实现字符串分隔的方法多样,可以根据具体需求选择合适的方法。对于大量或复杂的数据处理,封装好的包可以提高代码的可读性和维护性。

    plsql分割字符串

    通过对`FUNCTION_SF_SPLIT_STRING`的详细分析,我们可以看到,在PL/SQL中实现字符串分割不仅需要理解基本的字符串操作函数,还需要具备良好的逻辑思维和控制结构设计能力。掌握这种方法不仅可以提高数据库应用程序的...

    oracle split 函数

    本篇文章将详细介绍如何在Oracle中实现一个名为`split`的函数来完成字符串的分割,并将其结果以表的形式返回。 #### 二、Oracle Split函数设计原理 ##### 2.1 数据类型定义 为了能够返回一个表形式的结果,首先...

    截取用,分割的字符串中的第n个字符串 SQL

    综上所述,本文介绍了如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串的方法,并通过实例展示了其实际应用场景。这种方法不仅适用于简单的数据处理任务,还能够在复杂的数据分析项目中发挥重要作用。

    字符串分割成数组函数(plsql function)

    将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...

    oracle字符串分割自定义函数

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

    Oracle,Split

    而在Oracle数据库中,并没有内置的直接等效于.NET中`Split`的方法,因此我们需要使用SQL语句结合一些字符串处理函数来实现类似的功能。下面将具体介绍如何在Oracle中实现字符串分割。 #### 二、实现原理 为了实现...

    plsql中的字符串分割.txt

    ### PL/SQL字符串分割实现方法详解 为了实现字符串分割的功能,我们可以通过以下步骤来构建PL/SQL函数: 1. **定义输入参数**: - `p_input_string`:原始字符串。 - `p_delimiter`:分隔符。 2. **创建游标或...

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

    首先,我们可以使用Oracle的内置函数`REGEXP_SUBSTR`来实现字符串的拆分。`REGEXP_SUBSTR`用于从字符串中提取符合正则表达式模式的部分。在这个例子中,正则表达式`[^/]+`表示匹配除斜杠之外的任何字符的一个或多个...

    一个字符串分隔多个参数存储过程调试

    这就需要用到字符串处理函数,如SQL Server中的`STRING_SPLIT`,MySQL中的`SUBSTRING_INDEX`或`FIND_IN_SET`,或者Oracle中的`INSTR`和`SUBSTR`等。 在存储过程的调试方面,不同数据库系统提供了不同的工具和方法。...

    F_SPLIT-字符函数.sql

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

    用Pipelined Table实现split函数的示例

    本文档将详细介绍如何使用Pipelined Table Function来实现一个split函数,该函数可以将输入字符串根据给定的分隔符进行分割,并返回一个包含分割后结果的表。 #### Pipelined Table Function 基础 Pipelined Table...

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

    而`split`函数虽然在提供的内容中没有具体的实现,但通常它会与`splitstr`类似,用于将字符串按照某种规则拆分成数组或集合类型,以便于进一步的处理。 在处理大数据量时,这样的自定义函数尤其有用,因为它们避免...

    Oracle 自定义split 函数实例详解

    在Oracle数据库中,系统并未内置一个直接用于字符串分割的`SPLIT`函数,但我们可以根据需求自定义一个。本文将详细介绍如何在Oracle中创建一个自定义的`SPLIT`函数,以及如何使用这个函数进行字符串处理。 首先,...

Global site tag (gtag.js) - Google Analytics