当前位置:首页 > 开发 > 数据库 > 正文

Oracle实现类split函数的方

发表于: 2015-04-16   作者:zhaoshijie   来源:转载   浏览:
摘要: 关键字:Oracle实现类split函数的方 项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。 CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100); cr
关键字: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个元素

Oracle实现类split函数的方

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
保存在这里,方便自己以后查看 (⊙_⊙) ╮(╯▽╰)╭ -- 创建需要划分的字符串 with T1 as( select
描述 split()通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串 语
CREATE FUNCTION [dbo].[SplitString] ( @Expression nvarchar(4000),--要拆分的字符串 @splitchar
awk 每次从数据文件中只读取一数据进行处理. awk是依照其内建变量 RS(Record Separator) 的定义将文
为了把文本的内容按角色输出,我们应该把每一行的文本分成两部分,一部分是角色(role),一部分是
在继续sketch.txt文本时,会发生另外一种错误: 错误信息是: need more than 1 value to unpack,
/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserve
前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,
前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,
前面提到了记录合并,有了合并需求肯定也会有分离需求,说到字符串分离,大家肯定会想到SPLIT函数,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号