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('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
----------
123456
- select TRANSLATE('kkaxksx', 'kx', '12') from dual
- 结果:11a21s2
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
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将关键词语统一转换成一个特殊的字符串,比如这里的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()函数 替换函数的更多相关文章
- Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数
dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...
- Oracle的字符替换函数translate用法
参考文档如下:http://www.banping.com/2009/05/18/oracle_function_translate/ Oracle提供了一个字符替换函数translate,不同于re ...
- JS字符串替换函数:Replace(“字符串1″, “字符串2″),
JS字符串替换函数:Replace(“字符串1″, “字符串2″), 1.我们都知道JS中字符串替换函数是Replace(“字符串1″, “字符串2″),但是这个函数只能将第一次出现的字符串1替换掉, ...
- oracle REPLACE 函数 介绍
oracle REPLACE 函数是用另外一个值来替代串中的某个值. 例如,可以用一个匹配数字来替代字母的每一次出现.REPLACE 的格式如下所示: REPLACE ( char, search_s ...
- sql server 字符串替换函数REPLACE
sql server 字符串替换函数REPLACE函数的使用 <pre name="code" class="sql">--参数1:需要替换字符的母 ...
- mysql 替换函数replace()实现mysql 替换字符串
mysql 替换字符串的实现方法:mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来非常的方便,mysql 替换函数replace()Upd ...
- Python的替换函数——replace(),strip(),和re.sub()
在Python中常用的三个"替换"函数是strip(),replace()和re.sub(),下面来讲讲这三个函数的用法. 一.replace() 基本用法:对象.replace( ...
- Java中String的替换函数:replace与replaceAll的区别
例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]"; 要将里面的"kk"替换为++,可以使用两种方法得到相同的结果 r ...
- java中String字符串的替换函数:replace与replaceAll的区别
例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...
随机推荐
- pythony--运算符
python运算符 运算符表达式 python运算符: 赋值运算符.算数运算符.关系运算符.逻辑运算符 python表达式: 是将不同的数据(包括变量.函数)用运算符号按一定规则连接起来的一种式子 ...
- golang 实现定时任务
在实际开发过程中,我们有时候需要编写一些定时任务.当然我们可以使用crontab命令实现我们的需求.但是这种方法不满足一些定制化场景,同时会依赖具体的操作系统环境. 定时任务 在golang中我们可以 ...
- mysql疑问
- [UOJ #167]【UR #11】元旦老人与汉诺塔
题目大意:给你一个有$n$个盘子的汉诺塔状态$S$,问有多少种不同的操作方法,使得可以在$m$步以内到达状态$T$.$n,m\leqslant100$ 题解:首先可以知道的是,一个状态最多可以转移到其 ...
- 如何用navicat导入数据?
介绍了如何使用navicat导入数据到数据库 0背景介绍 这里用的软件版本号是11.2.7 1选择要导入的数据库,右击选择导入向导 2 选择导入数据文件的类型 根据要导入数据文件的类型,选择对应的导入 ...
- go 语言学习 ---解析xml
实例1 //main package main import ( "bytes" "encoding/xml" "fmt" "io ...
- 14-3 SQL Server基本操作
SQL Server安装默认新建四个系统数据库 1.master数据库 Master数据库时SQL Server中最重要的数据库.它记录SQL Server实例的所有系统级信息,包括实例范围的元数据. ...
- OpenJML入门
目录 OpenJML 获取 下载 使用 Linux Windows Parsing and Type-checking Extended Static Checking Runtime Asserti ...
- c#测量字体宽度
Bitmap image_size = * count, f.Height);//初始化大小 Graphics size_g = Graphics.FromImage(image_size); Siz ...
- CentOS 6.5本地yum源、局域网离线yum仓库(断网情况下轻松安装各种依赖包)
在工作中, 公司的服务器大部分都禁止连接外网的,初始化系统,测试某些产品时,往往缺一些软件或依赖包,一个个上传到机器,如此浪费时间,浪费金钱,en...yum能够自动查找并解决rpm包之间的依赖关系, ...