`
zhaoshijie
  • 浏览: 2273342 次
  • 性别: 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来操作。它们提供了添加、删除、修改记录的功能。在批量处理大量记录时,...

    全国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,是否可同时是...

    windows 64位 jdk7和jdk8

    2. **方法引用和构造器引用**:与lambda表达式一起,可以使用方法引用和构造器引用,直接将方法或构造器作为函数接口的实现。 3. **Stream API**:这是一个用于处理集合的新API,提供了丰富的操作集合的函数式接口...

Global site tag (gtag.js) - Google Analytics