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

Oracle的Replace函数与translate函数详解与比较

阅读更多

简要比较:

      replace 字符串级别的代替

     如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd

 

     translate 字符级别的代替

     如:select translate('acdd','cd','ef') from dual; -->aeff

 

分别详解

     replace:

     语法:REPLACE(char,search_string[,replacement_string])

     解释:replace中,每个search_string都被replacement_string所代替

        select replace('acdd','cd','ef') from dual; --> aefd

 

     如果replacement_string为空或为null,那么所有的search_string都被移除

     select replace('acdd','cd','') from dual; --> ad

 

     如果search_string 为null,那么就返回原来的char

     select replace('acdd','ef') from dual; -->acdd

     select replace('acdd','','') from dual; -->acdd(也是两者都为空的情况)

 

 

      translate:

      语法:TRANSLATE('char','from_string','to_string')

      解释:translate中,每个from_string中的字符被to_string中

        

        举例说明:

        

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

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

 

    

select TRANSLATE('kkaxksx', 'kx', '12') from dual 

结果:11a21s2

  


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武汉 

 


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

另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。

 

 

分享到:
评论
2 楼 wejack639 2013-04-27  
谢谢了,非常的有用
1 楼 longzw 2013-03-13  
SELECT REPLACE('accd','cd','ef') from dual; --> aefd  这个结果错了,应该是-->acef

相关推荐

    ORACLE replace和translate函数详解

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

    Oracle 函数replace和translate的比较

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

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

    **replace函数** `replace`函数则较为简单,它用于在字符串`char`中将所有出现的`search_string`替换为`replacement_string`。其语法如下: ```sql REPLACE(char, search_string, replacement_string) ``` - `...

    Oracle常用函数.txt

    在IT领域,尤其是在数据库管理与查询方面,Oracle作为业界领先的关系型数据库管理系统之一,提供了丰富的内置函数,以支持数据处理、分析和检索的各种需求。以下是从“Oracle常用函数.txt”文件中提炼出的关键知识点...

    Oracle常用函数.pdf

    ### Oracle常用函数详解 #### 一、概述 Oracle 数据库提供了丰富的内置函数,极大地提高了 SQL 语句在处理数据时的灵活性与效率。这些函数主要分为两大类:单行函数和多行函数(也称为聚合函数)。单行函数通常...

    oracle系统内置函数大全

    10. REPLACE函数:替换字符串中指定字符集的内容为另一个指定内容。 11. RPAD函数:使用指定字符集,在字符串的右侧填充,直到达到指定长度。 12. LPAD函数:与RPAD类似,但填充发生在字符串的左侧。 13. RTRIM函数...

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

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

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

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

    ORACLE常用函数功能演示

    - **其他**:LENGTH(获取字符串长度)、SUBSTR(截取子字符串)、INSTR(查找子字符串位置)、REPLACE(替换子字符串)、TRANSLATE(字符转换)。 **3. 日期函数** 日期函数帮助开发者处理日期和时间的操作: - ...

    ORACLE与SQLSERVER函数异同比较

    ### ORACLE与SQLSERVER函数异同比较 在数据库领域,Oracle和SQL Server是两种非常流行的数据库管理系统。这两种系统虽然有着不同的背景和发展历程,但都提供了丰富的功能来满足各种业务需求。尤其是在函数支持方面...

    Oracle函数大全.pdf

    此外,Oracle还提供了许多其他类型的函数,例如与环境信息和条件判断相关的函数。 - **dump**: 返回有关列的详细信息。 - **greatest/least**: 返回给定表达式列表中的最大值和最小值。 - **nvl/nvl2**: 在参数为...

    oracle常用函数功能演示

    `RTRIM`, `TRIM`用于去除字符串两侧的空格或特定字符,`LPAD`和`RPAD`则在字符串两侧填充指定字符或空格,`LENGTH`获取字符串长度,`SUBSTR`用于截取子字符串,`INSTR`查找子串位置,`REPLACE`替换子串,`TRANSLATE`...

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

    Oracle 数据库是世界上最广泛使用的数据库管理系统之一,它拥有丰富的数据类型和函数,使得开发者能够高效地处理各种数据。以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型*...

    oracle数据库常用的函数

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

    oracle系统内置函数

    ### Oracle系统内置函数详解 #### F.1 字符函数 —— 返回字符值 **1. ASCII** - **语法**: `ASCII(charc)` - **功能**: 返回一个字符串的第一个字符的ASCII码,其逆函数是`CHR()`。 - **使用示例**: - `SELECT ...

    oracle常用函数

    1. CONCAT: 这个函数用于连接两个或更多字符串,与Oracle中的“||”运算符功能相同。例如,`CONCAT('010-', '8801 8159')`会返回"010-8801 8159"。 2. LENGTH: 此函数返回字符串的字符长度。例如,`LENGTH('Oracle ...

Global site tag (gtag.js) - Google Analytics