zoukankan      html  css  js  c++  java
  • Oracle数据库存储过程 ,去除给定字符串中重复的字符串

    以下函数是本人在编写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; 
     
  • 相关阅读:
    C#异常断电后重新启动项目出现配置未初始化错误
    TFS: 解决The build agent error
    删除TFS中的项目
    将现有项目添加到TFS中
    Typora开启行内公式
    Markdown上下标内容多于一项
    小甲鱼python基础教程飞机大战源码及素材
    Git 将本地库添加到远程仓库
    C# float与UInt16互转
    C++的重载流输出运算符
  • 原文地址:https://www.cnblogs.com/encounter/p/2189176.html
Copyright © 2011-2022 走看看