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 函数和操作符结合使用,以实现更加复杂的数据处理任务。 在实际应用中,Oracle 中实现 Split ...
在Oracle数据库中,由于内置函数不直接支持像Java中的`split`那样拆分字符串并返回数组,因此开发者需要自定义函数来实现这一功能。这里提到的两种方法都是为了解决这个问题,即根据指定的分隔符将字符串拆分为一个...
在Oracle数据库中,处理字符串是常见的操作之一,尤其是在数据分析或数据清洗的过程中。有时我们需要将一个长字符串分割成多个部分,以便进行进一步的操作。Oracle提供了一些内置的函数来帮助我们完成这个任务。本篇...
本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...
Oracle 分割字符串 返回多行数据
### Oracle 分隔字符串函数知识点详解 #### 一、Oracle 分隔字符串函数介绍 在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助...
在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据...总的来说,Oracle中实现字符串分隔的方法多样,可以根据具体需求选择合适的方法。对于大量或复杂的数据处理,封装好的包可以提高代码的可读性和维护性。
通过对`FUNCTION_SF_SPLIT_STRING`的详细分析,我们可以看到,在PL/SQL中实现字符串分割不仅需要理解基本的字符串操作函数,还需要具备良好的逻辑思维和控制结构设计能力。掌握这种方法不仅可以提高数据库应用程序的...
本篇文章将详细介绍如何在Oracle中实现一个名为`split`的函数来完成字符串的分割,并将其结果以表的形式返回。 #### 二、Oracle Split函数设计原理 ##### 2.1 数据类型定义 为了能够返回一个表形式的结果,首先...
综上所述,本文介绍了如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串的方法,并通过实例展示了其实际应用场景。这种方法不仅适用于简单的数据处理任务,还能够在复杂的数据分析项目中发挥重要作用。
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...
而在Oracle数据库中,并没有内置的直接等效于.NET中`Split`的方法,因此我们需要使用SQL语句结合一些字符串处理函数来实现类似的功能。下面将具体介绍如何在Oracle中实现字符串分割。 #### 二、实现原理 为了实现...
### PL/SQL字符串分割实现方法详解 为了实现字符串分割的功能,我们可以通过以下步骤来构建PL/SQL函数: 1. **定义输入参数**: - `p_input_string`:原始字符串。 - `p_delimiter`:分隔符。 2. **创建游标或...
首先,我们可以使用Oracle的内置函数`REGEXP_SUBSTR`来实现字符串的拆分。`REGEXP_SUBSTR`用于从字符串中提取符合正则表达式模式的部分。在这个例子中,正则表达式`[^/]+`表示匹配除斜杠之外的任何字符的一个或多个...
这就需要用到字符串处理函数,如SQL Server中的`STRING_SPLIT`,MySQL中的`SUBSTRING_INDEX`或`FIND_IN_SET`,或者Oracle中的`INSTR`和`SUBSTR`等。 在存储过程的调试方面,不同数据库系统提供了不同的工具和方法。...
oracle自定义函数,字符串分解,可按分隔符分解字符串,分隔符可自己随便定义,非常灵活。欢迎下载。
本文档将详细介绍如何使用Pipelined Table Function来实现一个split函数,该函数可以将输入字符串根据给定的分隔符进行分割,并返回一个包含分割后结果的表。 #### Pipelined Table Function 基础 Pipelined Table...
而`split`函数虽然在提供的内容中没有具体的实现,但通常它会与`splitstr`类似,用于将字符串按照某种规则拆分成数组或集合类型,以便于进一步的处理。 在处理大数据量时,这样的自定义函数尤其有用,因为它们避免...
在Oracle数据库中,系统并未内置一个直接用于字符串分割的`SPLIT`函数,但我们可以根据需求自定义一个。本文将详细介绍如何在Oracle中创建一个自定义的`SPLIT`函数,以及如何使用这个函数进行字符串处理。 首先,...