`
penggle
  • 浏览: 57931 次
  • 性别: 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数据库中实现像C#等其它编程语言中Split函数来拆分字符的功能。例子简单易懂,并附有详细的实现过程。

    oracle_split_函数_返回数组

    最近在oracle 中用到拆分字符串返回数组,一直头痛,因为在 oracle 中没有类似java中有split 函数 ,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下: ...

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

    Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。

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

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

    oracle字符串分割自定义函数

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

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

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

    oracle split 函数

    实现oracle中 分割字符串的功能,返回一个表。 比如:abc;cde;dfd;133 select * from table(split('abc;cde;dfd;133')) 可以返回 abc cde dfd 133

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

    aaa,bbb,ccc n=2时 截取结果 bbb 很明白了吧 哈

    F_SPLIT-字符函数.sql

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

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

    最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理

    oracle 函数判断字符串是否包含图片格式的实例代码

    首先是写一个分割字符串的函数,返回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...

    ORACLE,mysql,sqlserver,sybase数据库装文本软件

    3.支持任意字符串作为每行分隔符,例如\r,\r\n,或者十六进制字符或任意指定的字符串(例如可实现把整个日志文件装入数据库的单个clob字段). 4.支持任意大小的文本,装入几十GB都试过没问题。 5.明确到每一行的错误信息....

    Ibatis.net结合oracle批量删除实现代码

    要删除的字符串ID为 代码如下: string SDSALES_IDString = 1,2,3,4,5,6,7 //转成Array Array array = SDSALES_IDString.Split(new string[] { “,” }, StringSplitOptions.RemoveEmptyEntries).ToArray();...

    php网络开发完全手册

    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...

    C#编程经验技巧宝典

    76 <br>0111 计算字符串中子字符串出现的次数 76 <br>0112 获得字符串中大写字母的个数 77 <br>0113 获得某字符在字符串中最后出现的位置 78 <br>0114 如何找出字符串中某一字符的所有位置 78...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    注意不同的是被单引号引出的字符串是以字面定义的,而双引号引出的字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例如下: $first = 'Hello'; $second = "World"; $full1 = "$first $second"; # ...

    Perl 实例精解(第三版).pdf

    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语句...

    asp.net知识库

    .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...

Global site tag (gtag.js) - Google Analytics