`
sllizhimei
  • 浏览: 166031 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 中的replace和translate函数 以及关键字过滤

阅读更多
文章出处:
http://hi.baidu.com/oldwolfcn/blog/item/e164272a98c11f25d52af15b.html


正文:

Oracle 中的replace和translate函数 以及关键字过滤replace(str1,str2,str3)是把str1中的所有str2字符串替换成str3。

replace(str1,str2)是把str1 中的所有str2字符串去掉,也就是替换成''。


translate

一、语法:
TRANSLATE(string,from_str,to_str)
二、目的
返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。
三、允许使用的位置
过程性语句和SQL语句。
四、示例
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual;
TRANSLATE (
--------------
123456ghij

SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual;
TRANSL
----------
123456


translate中有“#”的特殊用法,以#开头的表示所有字符

translate的主要作用是提取,替换字符串,其作用有时候和replace差不多.具体看下面的例子
select translate('liyan4h123ui','#liyanhui','#') from dual
结果:4123
select translate('liyan4h123ui','#liyanhui','#z') from dual;
结果:z4123
select translate('liyan4h123ui','#liyanhui','#zx') from dual;
结果:zx4123x
select translate('asadad434323', '#0123456789','#') from dual
结果:asadad
======================================

利用TRANSLATE实现关键字的过滤
有时候需要对一些关键词语进行过滤,直接使用replace的话,可能由于这些关键词语比较多而要嵌套使用,语句也不好写,同时也浪费资源。这种情况其实可以使用TRANSLATE和replace组合使用就能完全达到目的了。

比如要将“深圳”、“北京”等作为关键词语,在显示内容是要将这些词语过滤掉不显示:

--首先使用TRANSLATE将关键词语统一转换成一个特殊的字符串,比如这里的X
SQL> select TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX') from dual;

TRANSLATE('上海北京天津重庆广?
------------------------------
上海XX天津重庆广州XX武汉

--然后用replace将特殊的字符串替换掉。注意:不能用TRANSLATE直接将关键词语直接转换为''字符串
SQL> select replace(TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX'),'X') from dual;

REPLACE(TRANSLATE('上海北京天?
------------------------------
上海天津重庆广州武汉

SQL>

--但是,用TRANSLATE是以一个字符为单位的,只要匹配到都会转换。比如不管“北”和“京”是否连接在一起都会做转换
SQL> select TRANSLATE('上海京天津重庆北广州深圳武汉','深圳北京','XXXX') from dual;

TRANSLATE('上海京天津重庆北广?
------------------------------
上海X天津重庆X广州XX武汉

SQL>

补充:TRANSLATE(string,from,to)转换的两个注意点——
1、转换源字串(from)在目的字串(to)中不存在对应,则转换后被截除
2、转换目的字串(to)不能为'',''在oracle中被视为空值,因此无法匹配而返回为空值

另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。
select TRANSLATE('kkaxksx', 'kx', '12') from dual
结果:11a21s2
分享到:
评论

相关推荐

    ORACLE replace和translate函数详解

    ### ORACLE `replace` 和 `translate` 函数详解 在Oracle数据库中,处理字符串是非常常见的需求之一。为了更好地管理和操作数据,Oracle提供了多种内置函数来帮助我们实现这一目标。其中两个常用的函数是 `replace`...

    Oracle 函数replace和translate的比较

    在 Oracle 数据库中,`REPLACE` 和 `TRANSLATE` 都是字符串处理函数,但它们在功能和使用上存在显著的区别。首先,我们来详细了解这两个函数。 **REPLACE 函数** `REPLACE` 函数的主要作用是将源字符串(char)中...

    Oracle中的translate函数和replace函数的用法详解

    在Oracle数据库中,`translate`和`replace`是两种常用的字符串处理函数,它们在处理文本数据时发挥着重要作用。下面将详细阐述这两个函数的用法和区别。 **translate函数** `translate`函数的主要作用是在一个字符...

    oracle系统内置函数大全

    17. TRANSLATE函数:替换字符串中的指定字符集为另一个指定字符集。 18. TRIM函数:删除字符串的前后指定字符集。 19. UPPER函数:将字符串中的所有字符转换为大写。 数字函数 1. ABS函数:返回一个数字的绝对值。 ...

    ORACLE 数据类型及常用函数培训

    以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型** 1. **字符数据类型** - `Char(n)`:固定长度的字符串,最多可存储n个字符,不足会填充空格。 - `Varchar2(n)`:可变...

    ORACLE内部函数大全以及与SQLSERVER的区别

    Oracle 和 SQL Server 都是广泛使用的数据库管理系统,它们在处理数据时使用了各种内置函数来实现不同的操作。这里我们将详细探讨 Oracle 内部函数及其与 SQL Server 的等价函数,以便于理解两者之间的差异。 1. **...

    oracle函数大全,oracle函数大全,

    除此之外,Oracle还有其他很多功能强大的函数,如TRIM(同时去除字符串两侧的指定字符)、TRANSLATE(替换字符串中的一组字符为另一组字符)、REVERSE(反转字符串)等。这些函数在SQL查询和数据处理中发挥着重要...

    Oracle 基础语句 函数大全(字符串函数

    16. **TRANSLATE** 函数:将字符串中的某些字符替换为其他字符,如 `TRANSLATE('ABCDefghijklmn', 'eg', '替代')` 替换'e'和'g'。 了解并熟练使用这些函数,能帮助你在Oracle数据库中更高效地进行字符串处理,无论...

    ORACLE与SQLSERVER函数异同比较

    - **字符串翻译**: `TRANSLATE`函数在Oracle中用于替换字符串中的字符,SQL Server中没有直接对应的函数。 - **字符串长度**: `LENGTH`函数在Oracle中用于计算字符串长度,在SQL Server中使用`LEN`或`DATALENGTH`...

    Oracle常用函数.txt

    在IT领域,尤其是在数据库管理与查询...以上只是Oracle数据库中众多内置函数的一部分,熟练掌握这些函数的应用,能够极大地提高数据处理和查询的效率及准确性。对于初学者而言,通过实践来加深理解和记忆是十分必要的。

    ORACLE中CLOB字段转String类型

    本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...

    Oracle函数大全.pdf

    在Oracle数据库中,函数是一类预定...以上内容涵盖了Oracle中常见的函数及其用途,学习和掌握这些函数对于有效地使用Oracle数据库至关重要。在实际应用中,根据需要选择合适的函数可以大大提高查询效率和数据处理能力。

    Oracle常用函数.pdf

    ### Oracle常用函数详解 #### 一、概述 Oracle 数据库提供了丰富的内置函数,极大地提高了 SQL 语句在处理数据时的...在实际应用中,合理选择合适的函数,结合实际情况灵活运用,将极大提升数据处理的能力和效率。

    oracle常用函数功能演示

    字符处理函数在Oracle中尤为重要,如`INITCAP`用于首字母大写,`UPPER`和`LOWER`用于全角和半角字符的转换,`CONCAT`或`||`用于字符串拼接,`ASCII`和`CHR`则分别用于获取字符的ASCII码和根据编码创建字符。...

    oracle数据库常用的函数

    在Oracle数据库中,各种内置函数为开发者提供了强大的工具来处理不同的数据类型、数学计算以及字符串操作等。以下是一些在实际开发过程中经常使用的Oracle数据库函数的详细介绍。 #### 数学函数 1. **ABS**: 返回...

    ORACLE常用函数功能演示

    Oracle数据库系统内置了大量的函数,这些函数为数据库编程提供了极大的便利,因为它们是由Oracle公司的专家编写的,内嵌在数据库系统中,执行效率非常高。利用这些函数,开发者可以编写出更高效、更简洁的代码,从而...

    Oracle数据库实验 -- 函数和表达式

    ### Oracle数据库实验 -- 函数和表达式 ...通过以上实验,我们可以看到Oracle数据库提供了丰富的函数来处理数字和字符串数据,这些函数在实际开发过程中非常实用,能够帮助我们更加灵活地处理和查询数据。

    oracle和sql的语法区别大

    - Oracle 使用TRANSLATE函数进行字符串的翻译,SQL Server没有直接对应的函数。 - **LENGTH/DATELENGTH or LEN** - Oracle 使用LENGTH函数获取字符串长度,SQL Server使用DATELENGTH或LEN函数实现相同功能。 - *...

Global site tag (gtag.js) - Google Analytics