Oracle存储过程中去掉重复字符串函数

文章作者 100test 发表时间 2007:03:14 14:01:31
来源 100Test.Com百考试题网


以下函数是本人在编写Oracle数据库存储过程时写的函数,觉得该函数通用性较强,因此发表出来供需要的人参考。

这个函数的功能主要是用于去除给定字符串中重复的字符串.在使用中需要指定字符串的分隔符.示例:

str := MyReplace(13,14,13,444, ,).

输出:

13,14,444



create or replace function MyReplace(oldStr varchar2, sign varchar2) return varchar2 is

  str varchar2(1000).

  currentIndex number. 

  startIndex number.

  endIndex number.



  type str_type is table of varchar2(30)

       index by binary_integer.

  arr str_type.



  Result varchar2(1000).

begin     

  if oldStr is null then

    return ().

  end if.

  

  str := oldStr.

  

  currentIndex := 0.

  startIndex := 0.

  loop

    currentIndex := currentIndex   1.

    endIndex := instr(str, sign, 1, currentIndex).

    if (endIndex <= 0) then

      exit.

  end if.

    

  arr(currentIndex) := trim(substr(str, startIndex   1, endIndex - startIndex - 1)).

  startIndex := endIndex.

  end loop.

取最后一个字符串:

arr(currentIndex) := substr(str, startIndex   1, length(str)).

去掉重复出现的字符串:

for i in 1.. currentIndex - 1 loop

  for j in i   1..currentIndex loop

    if arr(i) = arr(j) then

      arr(j) := .

    end if.

  end loop.

  end loop.



  str := .

  for i in 1..currentIndex loop

  if arr(i) is not null then

    str := str || sign || arr(i).

数组置空:

arr(i) := .

  end if.

  end loop.

去掉前面的标识符:

Result := substr(str, 2, length(str)).

  return(Result).

end MyReplace.


相关文章


用改变跟踪技术加速Oracle递增备份
OracleSpatial时态空间数据库设计
如何在oracle中导入dmp数据库文件
oracle10g重建emdbcontrol
Oracle存储过程中去掉重复字符串函数
Oracle中的数据字典技术初级入门
oracle中设置自增主键
重建密码文件--解决ORA-01991错误
Oracle与SQLServer之间的数据迁移
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛