首先,创建一个获取字符被分割数量的函数。
create or replace function Get_StrArrayLength
(
av_str varchar2, --要分割的字符串
av_split varchar2 --分隔符号
)
return number
is
lv_str varchar2(1000);
lv_length number;
begin
lv_str:=ltrim(rtrim(av_str));
lv_length:=0;
while instr(lv_str,av_split)<>0 loop
lv_length:=lv_length+1;
lv_str:=substr(lv_str,instr(lv_str,av_split)+length(av_split),length(lv_str));
end loop;
lv_length:=lv_length+1;
return lv_length;
end Get_StrArrayLength;
然后,根据传入的索引,取出被分割出来的字符
create or replace function Get_StrArrayStrOfIndex
(
av_str varchar2, --要分割的字符串
av_split varchar2, --分隔符号
av_index number --取第几个元素
)
return varchar2
is
lv_str varchar2(1024);
lv_strOfIndex varchar2(1024);
lv_length number;
begin
lv_str:=ltrim(rtrim(av_str));
lv_str:=concat(lv_str,av_split);
lv_length:=av_index;
if lv_length=0 then
lv_strOfIndex:=substr(lv_str,1,instr(lv_str,av_split)-length(av_split));
else
lv_length:=av_index+1;
lv_strOfIndex:=substr(lv_str,instr(lv_str,av_split,1,av_index)+length(av_split),instr(lv_str,av_split,1,lv_length)-instr(lv_str,av_split,1,av_index)-length(av_split));
end if;
return lv_strOfIndex;
end Get_StrArrayStrOfIndex;
最后,调用这两个函数,我们就可以在sql里面像数组一样来使用分割字符串。
分享到:
相关推荐
这里利用了函数 regexp_substr和connect by 及oracle的正则相关函数实现oracle分割字符串方法
Oracle Sql 提供了 REPLACE() 函数,用于将字符串中的某个字符替换为另一个字符。 示例:SELECT REPLACE('abcdce', 'bc', 'test') FROM dual; -- 返回 atestdce 6. ASCII 码函数 Oracle Sql 提供了 ASCII() 函数...
`instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...
Oracle 分割字符串 返回多行数据
自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割字符串的函数,它接受两个参数:待分割的字符串`STRING`和用作分隔符的子字符串`SUBSTRING`,返回一个`VARCHAR2`类型的数组,其中包含了分割后...
传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考
string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式(‘i’不区分大...
数据库给定字符串,对相应的字符串进行分割。比如 ',a,b,c,d,e,'则分割出来的结果为a b c d e。
oracle 自定义函数 解析文件以“|”分割字符串
oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...
综上所述,本文介绍了如何在SQL中实现截取用特定字符分割的字符串中的第n个子字符串的方法,并通过实例展示了其实际应用场景。这种方法不仅适用于简单的数据处理任务,还能够在复杂的数据分析项目中发挥重要作用。
本文详细介绍了如何在 Oracle 数据库中实现字符串分隔的功能,通过自定义函数 `splitstr` 实现了根据用户定义的分隔符来分割字符串的目标。这种方法不仅灵活,而且易于维护和扩展,非常适合于处理各种复杂的字符串...
Oracle 中实现 Split 函数功能的优点是可以灵活地处理不同的分隔符和字符串长度。同时,这个函数也可以与其他 Oracle 函数和操作符结合使用,以实现更加复杂的数据处理任务。 在实际应用中,Oracle 中实现 Split ...
1. **SUBSTR()** 函数:此函数用于从字符串中提取指定长度的子串。它的语法是 `SUBSTR(string, start_position, length)`。`string` 是原始字符串,`start_position` 指定子串开始的位置(位置从1开始),`length` ...
`INSTR`函数用于查找字符串中特定子串的位置,其语法如下: ```sql INSTR(string, substr, [start_position, [occurrence]]) ``` - `string`:源字符串。 - `substr`:要查找的子字符串。 - `start_position`:可选...
它根据正则表达式`[^,]+`(表示非逗号的任何字符的一个或多个连续序列)来分割字符串,返回符合条件的部分。`REGEXP_REPLACE`函数虽然在此案例中未被直接使用,但它也是一个重要的正则表达式处理函数,可以用于替换...
本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...
下面的示例演示了如何使用`split`函数来分割字符串`'abc;cde;dfd;133'`,并将结果作为表返回。 ```sql select * from table(split('abc;cde;dfd;133')); ``` 执行上述语句后,将得到以下结果: - `abc` - `cde` - ...
标题中的“字符串分割”是指将一个较长的字符串按照特定的规则(如分隔符)拆分为多个子字符串。 ### 描述解释:“用pl/sql写一个函数, 实现根据分割符把原字符串分成若干个字符串功能” 这段描述进一步明确了具体...
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...