Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1184469
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2007-12-25 10:42:47

description:according to the delimited to split the string.
create or replace type t_vc is table of varchar2(100);
/
create or replace function myconvert(p_str varchar2, p_delim varchar2)
  return t_vc as
  v_result   t_vc;
  v_delimlen number := length(p_delim);
  i          number := 1;
  j          number;
  p          integer; --pointer to string
  p2         integer; --pointer to delim
begin
  if p_str is null then
    return null;
  elsif p_delim is null then
    return t_vc(p_str);
  end if;
  v_result := t_vc();
  p        := 1;
  loop
    p2 := instr(p_str, p_delim, p);
    v_result.extend;
    if p2 <> 0 then
      v_result(i) := substr(p_str, p, p2 - p);
    else
      v_result(i) := substr(p_str, p);
      exit;
    end if;
 
    -- check duplication value
    for j in 1 .. i loop
      if j <> i and v_result(j) = v_result(i) then
        raise_application_error(-20000,
                                'Duplicate value on ' || j || ' and ' || i || ' :' ||
                                v_result(i));
      end if;
    end loop;
 
    p := p2 + v_delimlen;
    i := i + 1;
  end loop;
  return v_result;
end;
/
SELECT column_value FROM TABLE(myconvert('junhua zhang,Jane',','));
阅读(1636) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~