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; 
     
  • 相关阅读:
    三元操作符的类型务必一致
    a++ 和 ++a 的区别
    TCP/IP四层协议模型与ISO七层模型
    CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置
    修改gcc/g++默认include路径
    js中Math.random()生成指定范围数值的随机数
    在 QML 中创建 C++ 导入类型的实例
    QML从文件加载组件简单示例
    Android插件化开发---执行未安装apk中的Service
    游戏开发热门技术浅析
  • 原文地址:https://www.cnblogs.com/encounter/p/2189176.html
Copyright © 2011-2022 走看看