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数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。
最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...
Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。
Oracle 分割字符串 返回多行数据
oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
实现oracle中 分割字符串的功能,返回一个表。 比如:abc;cde;dfd;133 select * from table(split('abc;cde;dfd;133')) 可以返回 abc cde dfd 133
aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈
oracle自定义函数,字符串分解,可按分隔符分解字符串,分隔符可自己随便定义,非常灵活。欢迎下载。
最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理
首先是写一个分割字符串的函数,返回table类型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split IS j INT := 0; i INT := 1; len INT := 0; len1 INT...
3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段). 4.支持任意大小的文本,装入几十GB都试过没问题。 5.明确到每一行的错误信息....
要删除的字符串ID为 代码如下: string SDSALES_IDString = 1,2,3,4,5,6,7 //转成Array Array array = SDSALES_IDString.Split(new string[] { “,” }, StringSplitOptions.RemoveEmptyEntries).ToArray();...
7.3.3 字符串分解操作——str_split 106 7.3.4 字符串单词数的计算函数—— 7.3.4 str_word_count 107 7.3.5 字符串查找操作——strstr 108 7.3.6 获得字符串的长度——strlen 108 7.3.7 获得字符串的子串——substr...
76 <br>0111 计算字符串中子字符串出现的次数 76 <br>0112 获得字符串中大写字母的个数 77 <br>0113 获得某字符在字符串中最后出现的位置 78 <br>0114 如何找出字符串中某一字符的所有位置 78...
注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # ...
5.3.11 特殊字符串运算符和函数 5.3.12 生成随机数 5.3.13 rand/srand函数 练习4 运算符 第6章 条件 6.1 控制结构,块和复合语句 6.2 决策--条件结构 6.2.1 if和unless语句 6.2.2 unless语句...
.NET 2.0中的字符串比较 小试ASP.NET 2.0的兼容性 为 asp.net 2.0 的菜单控件增加 target 属性 ASP.NET 2.0 的内部变化 常见的 ASP.NET 2.0 转换问题和解决方案 Asp.Net2.0无刷新客户端回调 体验.net 2.0 的优雅(1...