zoukankan      html  css  js  c++  java
  • Oracle 去掉重复字符串

    create or replace function remove_same_string(oldStr varchar2, sign varchar2) return varchar2 is
    
      /****************************************************
      ** Oracle去掉重复字符串
      ** 函数名称:RemoveSameStr
      ** 参    数:【名称】         【类型 】      【说明】
      **           oldStr           varchar2       要处理的字符串
      **           sign             varchar2       字符串分隔符
      ** 返 回 值:Result           varchar2       不包含重复子串的记录
      ****************************************************/
      str          varchar2(2000);
      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;
    
      --字符串太长
      if length(oldStr) > 2000 then
        return(oldStr);
      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 remove_same_string;
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/stono/p/5455547.html
Copyright © 2011-2022 走看看