Oracle的Replace函数与translate函数详解与比较
博客分类: Oracle
oraclereplaceTRANSLATE详解比较
简要比较:
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中
举例说明:
Sql代码 收藏代码
SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual; TRANSLATE (
--------------
123456ghij
SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual; TRANSL
----------
123456
Sql代码 收藏代码
select TRANSLATE('kkaxksx', 'kx', '12') from dual
结果:11a21s2
translate中有“#”的特殊用法,以#开头的表示所有字符
translate的主要作用是提取,替换字符串,其作用有时候和replace差不多.具体看下面的例子
Sql代码 收藏代码
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组合使用就能完全达到目的了。
比如要将“深圳”、“北京”等作为关键词语,在显示内容是要将这些词语过滤掉不显示:
Sql代码 收藏代码
--首先使用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中被视为空值,因此无法匹配而返回为空值
另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。
文章转自 http://knowyouknowme.iteye.com/blog/1138111
分享到:
相关推荐
ORACLE replace和translate函数详解
今天看了SQL COOKBOOK中的一个例子,其中看到了两个函数Replace和Translate时产生了疑惑,感觉这两个函数的作用是一样的,书上面的例子也看的不是很明白,Google了一下,看了Oracle的官方解释,终于彻底明白了。...
translate返回expr,其中from_string中的每个字符的所有出现都被to_string中的相应字符替换,而replace 函数将char中的字符串search_string...下面给大家分享Oracle中的translate函数和replace函数的用法,一起看看吧
13.oracle函数 26 (1)字符函数 26 (2)数学函数 26 (3)日期函数 27 (4)给表取别名的时候,不能加as;但是给列取别名,是可以加as 27 (5)转换函数 27 (6) to_char(date,'format') 27 (7) to_date(string,'format') 28 ...
第11章 转换函数与变换函数 11.1 基本的转换函数 11.1.1 数据类型的自动转换 11.1.2 关于自动转换的注意事项 11.2 特殊的转换函数 11.3 变换函数 11.3.1 TRANSLATE 11.3.2 DECODE 11.4 小结 第12章 分组函数 12.1 ...
第11章 转换函数与变换函数 11.1 基本的转换函数 11.1.1 数据类型的自动转换 11.1.2 关于自动转换的注意事项 11.2 特殊的转换函数 11.3 变换函数 11.3.1 TRANSLATE 11.3.2 DECODE 11.4 小结 第12章 分组函数 12.1 ...
1 CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2) 2 RETURN NUMBER 3 IS 4 v_str VARCHAR2 (1000); 5 BEGIN 6 IF str IS NULL 7 THEN 8 RETURN 0; 9 ELSE 10 v_str := translate(str, '....
§10.1.1 Oracle与2000年问题 212 §10.1.2 如何正确插入日期数据 213 §10.1.3 在查询中只返回满足条件的部分记录 214 §10.1.4 快速大量删除数据Truncate 215 §10.1.5 Rowid的使用 215 §10.1.6 在查询中不让记录...
sql> alter index xay_id allocate extent(size 200k datafile \'c:/oracle/index.dbf\'); <8>.alter index xay_id deallocate unused; 、查看索引 SQL>select index_name,index_type,table_name from user...
OLAP 与OLTP 的比较313 OLTP 的调试313 OLAP 的调试314 批量载入与事务处理进程314 删除索引以优化数据的载入316 经常使用COMMIT 来让DBA 走开316 在动态环境中重新生成表和索引317 数据库的调整319 性能的障碍322 ...
C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 --PL/SQL基础1 declare begin dbms_output.('不输出不换行'); dbms_output.put_line('输出并换行'); end; --PL/SQL基础2 declare dig number(20,...
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unlock; --那么这个用户名就能使用了。 --(默认全局数据库名orcl) 1、...
REPLACE ........................................................................................................ 84 SUBSTR.................................................................................