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

Oracle实现类split函数的方

 
阅读更多
关键字:Oracle实现类split函数的方
项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。

CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100);

create or replace function f_split_100(p_str_all in varchar2,
                                            p_str_gap in varchar2)
  return t_split_100 is
  v_ntb_allstring t_split_100;

  str_unit varchar2(100);
  str_char varchar2(100);

  i_str_length number;
  i_str_index  number;

begin
  v_ntb_allstring := t_split_100();

  i_str_length := length(p_str_all);

  i_str_index := 1;

  while (i_str_index <= i_str_length) loop
    str_char := substr(p_str_all, i_str_index, 1);

    if (str_char = p_str_gap) then

      if (str_unit is not null) then
        v_ntb_allstring.extend(1);
        v_ntb_allstring(v_ntb_allstring.count) := str_unit;
        str_unit := null;
      end if;

    else
      str_unit := str_unit || str_char;

      if (i_str_index = i_str_length) then
        v_ntb_allstring.extend(1);
        v_ntb_allstring(v_ntb_allstring.count) := str_unit;
        str_unit := '';
      end if;

    end if;

    i_str_index := i_str_index + 1;
  end loop;

  return(v_ntb_allstring);
end;
使用方法f_split_100(‘a|b|c|d’, ‘|’),返回的是Collection。
查看结果的方法 select * from table(f_split_100(‘a|b|c|d’, ‘|’));
Collection使用方法如下

EXISTS 该函数返回集合中第一个元素的索引,如果集合为空,返回NULL Collection.EXISTS(index
COUNT Collection.COUNT Collection.COUNT
DELETE 该过程从嵌套表中删除一个或多个或合部元素 Table_name.DELETE 删除所有元素
Table_name.delete(index)删除指定索引的记录
Table_name.delete(start_index,end_index)删除区间内元素
FIRST 返回集合第一个元素索引,如果集合为空,返回NULL Collection.FIRST
LAST 返回集合中最后一个元素索引,如果集合为空,返回NULL Collection. LAST
NEXT 返回集合中最后一个元素索引,如果集合为空,返回NULL Collection. NEXT
PRIOR Collection. PRIOR Collection. PRIOR
LIMIT 返回varray中创建元素的最大个数 Collection. LIMIT
EXTENDS 该过程在集合的末尾添加新的元素 Collection.EXTEND添加一个NULL元素;Collection.extends(n)添加N个NULL元素,Collection.extend(n,index)添加由index指定位置上元素的n个副表
TRIM Collection.TRIM 删除最后一个元素
Collection.TRIM(n)删除最后N个元素 Collection.TRIM 删除最后一个元素
Collection.TRIM(n)删除最后N个元素
分享到:
评论

相关推荐

    用Pipelined Table实现split函数的示例

    通过本示例,我们了解了如何使用Oracle中的Pipelined Table Function来实现一个高效的split函数。这种方法不仅可以简化字符串处理的任务,还可以显著提高处理大量数据时的性能。在实际应用中,根据不同的需求,我们...

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

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

    jsp分页 oracle 插件demo

    在这个demo中,可能包含了一个名为`Split`的类或文件,这可能是实现分页逻辑的关键部分。`Split`可能封装了数据库查询、计算页数和生成分页链接等功能,你需要深入研究其内部实现。 总之,"jsp分页 oracle 插件demo...

    oracle数据行列转换

    2. 更复杂的行转列操作通常需要用到PIVOT函数,这是Oracle 11g引入的新特性,但在Oracle 10g中也可以通过手工模拟实现。PIVOT函数可以自动将行数据转换为列,使得数据透视变得更加便捷。 ```sql -- Oracle 11g及...

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

    OraLoad类的int ProcLoad(Connection in_conn, String args[])函数就可以实现类似功能了。例如 new OraLoad.ProcLoad( null, "-u test -p testpwd -i 127.0.0.1 -s ora10 -f test.txt -t tmp_test -c , -e gbk"); ...

    PL/SQL实现JAVA中的split()方法的例子

    在Java编程语言中,`split()`方法是String类的一个重要成员,它允许开发者根据指定的分隔符将字符串拆分为一个字符串数组。然而,在Oracle的PL/SQL环境中,并没有直接对应的函数来完成相同的功能。因此,当需要在PL/...

    oracle基础知识

    Oracle提供了多种类型的内置函数,包括数值型、日期型、字符型等。 ##### 7.2 数值型常用函数 常见的数值型函数包括: - `ROUND`: 四舍五入。 - `TRUNC`: 截断小数部分。 - `MOD`: 求模运算。 ##### 7.3 日期型...

    (完整word版)ORACLE数据库期末考试题目及答案.docx

    - **分析函数**:这类函数主要用于复杂的数据分析任务,例如计算累积排名、移动平均数等。它们能够在处理大量数据时提供高效的数据分析能力。 #### 6. 别名创建 - **别名**:在 SQL 查询中,可以通过使用引号或双...

    行列转换总结.pdf

    例如,在 SQL 中可以使用 `REGEXP_SPLIT_TO_TABLE` 或者 `STRING_TO_ARRAY` 函数来实现这一目的。 ### 五、结论 通过对行列转换六种常见情况的学习,我们可以更加灵活地处理和组织数据。无论是在数据清洗、数据...

    Delphi文本和数据库表格记录的转换..rar

    这个过程通常涉及字符串操作,如Split函数、Pos函数等。 5. **记录处理**:对于数据库表格记录,可以使用TDataSet或其子类如TTable、TQuery来操作。它们提供了添加、删除、修改记录的功能。在批量处理大量记录时,...

    php网络开发完全手册

    13.3.2 ORACLE 207 13.3.3 SYBASE 207 13.3.4 DB2 207 13.3.5 SQL Server 207 13.4 SQL语言简介 207 13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式...

    全国2011年1月高等教育自学考试Java语言程序设计(一)试题.pdf

    考生需要掌握数组的创建、访问和操作,以及集合接口(如List, Set, Queue)和其实现类(如ArrayList, LinkedList, HashSet, HashMap等)的使用方法。 在Java I/O流和字符串处理上,考生需要理解输入输出流的基本...

    Java实现的小型计算器(仿Windows计算器)

    这可能涉及到`String`类的方法,如`split()`用于分割字符串,以及`Integer.parseInt()`或`Double.parseDouble()`将字符串转换为数值类型。 5. **连续运算**:为了支持连续运算,程序需要保持当前的计算结果,并在...

    Perl 语言入门(四版).rar

    Perl的内建函数如chomp和chop可用来处理行结束符,split和join用于分割和合并字符串。 4. **文件操作**:Perl提供了简单易用的文件I/O操作,包括打开、读取、写入和关闭文件。文件句柄和输入/输出模式是进行文件...

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

    传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP...

    JAVA+ORALCE面试题汇总

    在Oracle数据库中,获取当前时间可以使用`SYSDATE`函数。例如: ```sql SELECT SYSDATE FROM DUAL; ``` #### 7. Oracle的备份与恢复策略 Oracle提供了多种备份和恢复机制,确保数据的安全性和可靠性。常见的备份...

    大数据平台-Sqoop培训.pdf

    接着,它会设置MapReduce作业所需的参数,并由MapReduce框架负责执行实际的数据迁移工作,包括数据的切分、范围的写入、RecordReader的创建以及Map函数的调用,最终将数据导入HDFS或导出到数据库。 总结来说,Sqoop...

    石家庄天远科技集团有限公司—Java开发笔试题

    题目中还要求编写代码将字符串“3,1,2,4”拆分为数组,并按升序排序,这可以通过`split()`方法和`Arrays.sort()`实现。 【HTML部分】 JavaScript验证输入框内容为整数,可以使用正则表达式或`parseInt()`函数,...

    Java就业面试题264道(独家奉献)

    - 抽象类可以有构造函数,接口中不能有构造函数。 - 抽象类可以有实例方法,接口中的方法默认都是抽象的。 - 类只能继承一个抽象类,但可以实现多个接口。 **45. abstract的method是否可同时是static,是否可同时是...

Global site tag (gtag.js) - Google Analytics