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; 
     
  • 相关阅读:
    鼠标经过,显示悬浮DIV
    js 循环向上滚动
    Android 全局搜索条写成自定义控件-曹永思
    CYS-Sqlite数据导入工具
    启动Android App时,动态将Sqlite数据库文件导入到手机中类方法
    asp.net 多线程
    1.母版简单创建和使用
    class表与student表之间的关系
    02Del.ashx(删除班级)
    05StuList.aspx(学生列表)
  • 原文地址:https://www.cnblogs.com/encounter/p/2189176.html
Copyright © 2011-2022 走看看