`
conkeyn
  • 浏览: 1524602 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Oracle 去掉重复字符串

阅读更多

砝码

create or replace function remove_rame_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_rame_string;
 

 

 

分享到:
评论
1 楼 lirenzhong5432 2015-04-01  
创建一个视图,在过程里用视图就可以了

相关推荐

    oracle字符串替换

    例如,可以与`TRIM`函数一起使用来去除字符串两端的空白字符,或者与`SUBSTR`函数一起使用来截取字符串中的特定部分。 #### 5. 注意事项 在使用`REGEXP_REPLACE`函数时需要注意以下几点: - 正确理解并编写正则...

    oracle 删除去掉重复项

    上述方法涵盖了从基本的单字段重复项处理到复杂的复合键重复数据删除,以及对字符串数据的修正。掌握这些技巧,不仅能够提升数据的准确性,还能增强数据库的整体性能。在实际操作中,务必谨慎测试任何数据修改语句,...

    Oracle sql 函数大全 比较常用的一些 函数 整理

    2. REPLICATE():返回一个重复 character_expression 指定次数的字符串。 3. REVERSE():将指定的字符串的字符排列顺序颠倒。 在 Oracle SQL 中,我们可以使用这些函数来处理和操作字符串数据,提高数据处理的效率...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    oracle函数速查

    除了这些基本的单行函数,Oracle还提供了许多其他功能强大的函数,例如`SUBSTR()`用于提取字符串的一部分,`LENGTH()`返回字符串的长度,`TRIM()`去除字符串两端的空白字符,`LOWER()`和`UPPER()`用于大小写的转换,...

    oracle和sql的语法区别大

    - Oracle 使用RPAD函数在字符串右侧填充字符,SQL Server 使用REPLICATE函数重复字符串。 - **SOUNDEX** - Oracle 和 SQL Server 均提供了SOUNDEX函数用于获取字符串的语音表示。 - **RPAD/SPACE** - Oracle ...

    Oracle String常用方法封装

    6. **去除空白**:`TRIM_WHITESPACE(str)`可以去除字符串首尾的空格。 7. **大小写转换**:`TO_UPPERCASE(str)`和`TO_LOWERCASE(str)`分别将字符串转换为大写和小写。 8. **比较字符串**:可能提供了`STR_COMPARE...

    oracle数据库函数

    - **UNION ALL**: 类似于 UNION,但它不会去除重复行。因此,如果两个 SELECT 语句中有相同的记录,这些记录将会在结果集中出现多次。 ### 2. MINUS - **MINUS**: 该运算符用于返回第一个 SELECT 语句的结果集中不...

    oracle学习参考

    `UNION ALL`则用于合并多个查询结果,去除重复行。 3. **字符串操作** - **字符串的行转列**:Oracle提供了`REGEXP_SUBSTR`函数结合正则表达式来分割字符串。例如,通过匹配非`#`字符,可以逐个提取`#`分隔的子串...

    Oracle数据库Sql语句详解大全.pptx

    * 去除重复行:SELECT DISTINCT 列名 &gt; FROM 表名 &gt; 二、条件查询 * WHERE 条件查询:SELECT 列名 &gt; FROM 表名 &gt; WHERE 查询条件表达式 &gt; * 使用 LIKE 进行模糊查询:SELECT 列名 &gt; FROM 表名 &gt; WHERE 列名 &gt; LIKE...

    oracle数据库面试题目汇总

    Oracle数据库提供了丰富的字符串处理函数,例如ASCII()用于获取字符的ASCII码,CHR()用于将ASCII码转换为字符,CONCAT()用于连接两个字符串,LOWER()和UPPER()分别用于转换字符串为小写和大写,LTRIM()、RTRIM()和...

    oracle最常用的函数或方法总结

    - `TRIM()`:去除字符串首尾的空格或指定字符。 - `REPLACE()`:替换字符串中的某个子串。 2. **数值计算函数** - `ROUND()`:四舍五入到指定的小数位数。 - `TRUNC()`:截断数字到指定的小数位数。 - `MOD()`...

    Oracle学习查询语句

    同时,`DISTINCT`用于去除查询结果中的重复行。 模糊查询是通过`LIKE`关键字实现的,它允许使用通配符。`%`代表任意数量的字符,`_`代表单个字符。例如,`WHERE name LIKE '%Smith%'`将找到所有名字中包含"Smith"的...

    Oracle学习笔记_(PDF版)

    - **去除重复行**: - 移除某一列中的重复行:`SELECT DISTINCT 字段 FROM 表名;` - 移除多列的组合重复行:`SELECT DISTINCT 字段1, 字段2 FROM 表名;` - **WHERE子句**: - 不等于:`&lt;&gt;` 或 `!=` - 字符串比较:...

    ORACLE函数大全

    `INSTR`函数用于查找一个字符串在另一个字符串中的位置,可以指定搜索的起始位置和重复出现的次数。示例中,我们查找了字符串'oracletraning'中第二个'ra'的位置,结果为9。 ### 6. LENGTH `LENGTH`函数用于返回...

    马士兵oracle笔记

    以上是Oracle SQL基础操作的一部分,涵盖了用户管理、查询、条件过滤、排序和字符串处理等多个方面。理解并熟练掌握这些基本操作是使用Oracle数据库的基础。在实际应用中,还需要学习更复杂的查询技巧,如联接、子...

    Oracle函数及常用sql

    - `UNION`:合并两个查询结果,去除重复行。 - `INTERSECT`:返回两个查询结果的交集。 - `MINUS`:返回第一个查询结果中不在第二个查询结果中的行。 6. **游标(CURSOR)**: - 在PL/SQL中处理查询结果,逐行...

    oracle测试试卷

    - **题目:** oracle中获取字符串"123123"长度的语句正确的是? - **答案:** B (`SELECT LENGTH('123123') FROM dual`) - **解析:** `LENGTH` 函数用于计算字符串的字符数。在Oracle中,`dual` 是一个特殊表,用于...

    oracle常用命令_笔记

    - Oracle使用双竖线`||`进行字符串连接,如`SELECT 'string1' || 'string2' FROM dual`。 7. **算术运算**: - Oracle支持加法(`+`), 减法(`-`), 乘法(`*`), 和除法(`/`)等基本算术运算。 8. **SQL脚本编辑**: ...

    oracle汇总.docx

    基础的简单查询可以使用`SELECT {DISTINCT 去除重复}* |字段 别名 FROM 表名`来实现,其中`DISTINCT`用于去除重复行,`*`表示选择所有字段,别名用于给字段命名。对于数据显示,可以使用字符串连接操作如`SELECT '...

Global site tag (gtag.js) - Google Analytics