• 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# BulkCopy System.Data.SqlClient 数据库批量添加行数句
    SQL server 数据库优化表
    Bootstrap简介,特点,用法
    Entity Fromwork浅谈
    ADO,net 实体数据模型增、删、改,浅谈
    程序如何适应所有的难产客户
    访问数据库优化
    C#中哈希表(HashTable)的用法详解
    C# winform无边框窗体移动
    函数柯里化之加法add应用---add(1,2) add(1)(2) add(1)(2)(3) add(1,2,3)(4)
  • 原文地址:https://www.cnblogs.com/encounter/p/2189176.html
Copyright © 2020-2023  润新知