简要比较:

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中

举例说明:

  1. SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
  2. --------------
  3. 123456ghij
  4. SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
  5. ----------
  6. 123456
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
----------
123456
  1. select TRANSLATE('kkaxksx', 'kx', '12') from dual
  2. 结果:11a21s2
select TRANSLATE('kkaxksx', 'kx', '12') from dual 

结果:11a21s2

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

translate的主要作用是提取,替换字符串,其作用有时候和replace差不多.具体看下面的例子

  1. select translate('liyan4h123ui','#liyanhui','#') from dual
  2. 结果:4123
  3. select translate('liyan4h123ui','#liyanhui','#z') from dual;
  4. 结果:z4123
  5. select translate('liyan4h123ui','#liyanhui','#zx') from dual;
  6. 结果:zx4123x
  7. select translate('asadad434323', '#0123456789','#') from dual ;
  8. 结果:asadad
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组合使用就能完全达到目的了。

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

  1. --首先使用TRANSLATE将关键词语统一转换成一个特殊的字符串,比如这里的X
  2. SQL> select TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX') from dual;
  3. TRANSLATE('上海北京天津重庆广?
  4. ------------------------------
  5. 上海XX天津重庆广州XX武汉
  6. --然后用replace将特殊的字符串替换掉。注意:不能用TRANSLATE直接将关键词语直接转换为''字符串
  7. SQL> select replace(TRANSLATE('上海北京天津重庆广州深圳武汉','深圳北京','XXXX'),'X') from dual;
  8. REPLACE(TRANSLATE('上海北京天?
  9. ------------------------------
  10. 上海天津重庆广州武汉
  11. SQL> --但是,用TRANSLATE是以一个字符为单位的,只要匹配到都会转换。比如不管“北”和“京”是否连接在一起都会做转换
  12. SQL> select TRANSLATE('上海京天津重庆北广州深圳武汉','深圳北京','XXXX') from dual;
  13. TRANSLATE('上海京天津重庆北广?
  14. ------------------------------
  15. 上海X天津重庆X广州XX武汉
--首先使用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中被视为空值,因此无法匹配而返回为空值

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

转载自:https://www.iteye.com/blog/knowyouknowme-1138111

Oracle Replace()函数与translate()函数 替换函数的更多相关文章

  1. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

  2. Oracle的字符替换函数translate用法

    参考文档如下:http://www.banping.com/2009/05/18/oracle_function_translate/ Oracle提供了一个字符替换函数translate,不同于re ...

  3. JS字符串替换函数:Replace(“字符串1″, “字符串2″),

    JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...

  4. oracle REPLACE 函数 介绍

    oracle REPLACE 函数是用另外一个值来替代串中的某个值. 例如,可以用一个匹配数字来替代字母的每一次出现.REPLACE 的格式如下所示: REPLACE ( char, search_s ...

  5. sql server 字符串替换函数REPLACE

    sql server 字符串替换函数REPLACE函数的使用 <pre name="code" class="sql">--参数1:需要替换字符的母 ...

  6. mysql 替换函数replace()实现mysql 替换字符串

    mysql 替换字符串的实现方法:mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便,mysql 替换函数replace()Upd ...

  7. Python的替换函数——replace(),strip(),和re.sub()

    在Python中常用的三个"替换"函数是strip(),replace()和re.sub(),下面来讲讲这三个函数的用法. 一.replace() 基本用法:对象.replace( ...

  8. Java中String的替换函数:replace与replaceAll的区别

    例如有如下x的字符串  String x = "[kllkklk\\kk\\kllkk]"; 要将里面的"kk"替换为++,可以使用两种方法得到相同的结果  r ...

  9. java中String字符串的替换函数:replace与replaceAll的区别

    例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...

随机推荐

  1. pythony--运算符

    python运算符 运算符表达式 python运算符:   赋值运算符.算数运算符.关系运算符.逻辑运算符 python表达式: 是将不同的数据(包括变量.函数)用运算符号按一定规则连接起来的一种式子 ...

  2. golang 实现定时任务

    在实际开发过程中,我们有时候需要编写一些定时任务.当然我们可以使用crontab命令实现我们的需求.但是这种方法不满足一些定制化场景,同时会依赖具体的操作系统环境. 定时任务 在golang中我们可以 ...

  3. mysql疑问

  4. [UOJ #167]【UR #11】元旦老人与汉诺塔

    题目大意:给你一个有$n$个盘子的汉诺塔状态$S$,问有多少种不同的操作方法,使得可以在$m$步以内到达状态$T$.$n,m\leqslant100$ 题解:首先可以知道的是,一个状态最多可以转移到其 ...

  5. 如何用navicat导入数据?

    介绍了如何使用navicat导入数据到数据库 0背景介绍 这里用的软件版本号是11.2.7 1选择要导入的数据库,右击选择导入向导 2 选择导入数据文件的类型 根据要导入数据文件的类型,选择对应的导入 ...

  6. go 语言学习 ---解析xml

    实例1 //main package main import ( "bytes" "encoding/xml" "fmt" "io ...

  7. 14-3 SQL Server基本操作

    SQL Server安装默认新建四个系统数据库 1.master数据库 Master数据库时SQL Server中最重要的数据库.它记录SQL Server实例的所有系统级信息,包括实例范围的元数据. ...

  8. OpenJML入门

    目录 OpenJML 获取 下载 使用 Linux Windows Parsing and Type-checking Extended Static Checking Runtime Asserti ...

  9. c#测量字体宽度

    Bitmap image_size = * count, f.Height);//初始化大小 Graphics size_g = Graphics.FromImage(image_size); Siz ...

  10. CentOS 6.5本地yum源、局域网离线yum仓库(断网情况下轻松安装各种依赖包)

    在工作中, 公司的服务器大部分都禁止连接外网的,初始化系统,测试某些产品时,往往缺一些软件或依赖包,一个个上传到机器,如此浪费时间,浪费金钱,en...yum能够自动查找并解决rpm包之间的依赖关系, ...