ORACLE replace和translate函数详解

转载 2013年12月05日 09:53:38
简要比较:
replace:字符串级别的代替  
如:
SELECT REPLACE('acdd','cd','ef'FROM dual; →aefd
translate:字符级别的代替
如:
SELECT TRANSLATE('acdd','cd','ef'FROM dual; →aeff
分别详解:

 replace:

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

REPLACE returns char with every occurrence of search_string replaced with replacement_string. If replacement_string is omitted or null, then all occurrences of search_string are removed. If search_string is null, then char is returned.

解释:repalce中,每个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(也是两者都为空的情况) 

Both search_string and replacement_string, as well as char, can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The string returned is of VARCHAR2 datatype and is in the same character set as char.

解释:这段指明了可以用的数据类型.

This function provides functionality related to that provided by the TRANSLATE function. TRANSLATE provides single-character, one-to-one substitution. REPLACE lets you substitute one string for another as well as to remove character strings.

解释:红色部分也是replace和translate的区别。

translate:

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

TRANSLATE returns char with all occurrences of each character in from_string replaced by its corresponding character in to_string. Characters in char that are not in from_string are not replaced. The argument from_string can contain more characters than to_string. In this case, the extra characters at the end of from_string have no corresponding characters in to_string. If these extra characters appear in char, then they are removed from the return value.You cannot use an empty string for to_string to remove all characters in from_string from the return value. Oracle interprets the empty string as null, and if this function has a null argument, then it returns null.

解释:Translate中,每个from_string中的字符被to_string中相应的字符所代替。

select translate('acdd','cd','ef'from dual;→aeff

如果from_string比to_string长,那么from_string中多余的字符将被移除。

select translate('acdd','acd','ef'from dual;→ef (a由e代替,c由f代替,d就被移除)
select translate('acdd','cda','ef'from dual;→eff(c由e代替,d由f代替,a就被移除)

如果to_string为空,或者两者都为空,那么返回char也为空。所以to_string不能为空。

select translate('acdd','cd',''from dual;→ (空)
select translate('acdd','',''from dual;→(空)
实战:
如何判断一个字符串是否是数字?
解:先转换:由于to_string不能为空,我们巧用#号代替
select translate('abc123','#1234567890.','#'from dual;→abc 

from_string中的#被to_string中的#代替,但char中又没有#字符,所以通过这一步躲开了to_string必须不为空的规则。然后后面的数字以及小数点都转换为空,于是原来的字符串中只留下abc三个字符。

      转换好后,用nvl2判断即可:
 select nvl2(translate('abc123','#1234567890.','#'),'字符串','数字'from dual;→字符串

nvl2的作用就是,NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。这样我们就可以判断一个字符串是否是数字了!解毕!

相关文章推荐

ORACLE replace和translate函数详解

  • 2013年03月31日 12:26
  • 36KB
  • 下载

ORACLE replace和translate函数详解

转载自:http://space.itpub.net/17309626/viewspace-663002 题记:老了,很多东西看了之后就忘了,所谓过目即忘,把他记下来,有时间再翻翻看, 内...

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

简要比较:       replace 字符串级别的代替      如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd        ...

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

最近在开发一个项目的时候,需要做模糊输入处理。 比如    2,Z,z    0,o,O    2,B,b,8    1,i,I,l,L 用到的translate和upper,lower函...

Oracle之translate及replace函数用法总结

1、translate的用法   作用:translate的主要作用是提取,替换字符串,其作用有时候和replace差不多。   语法:TRANSLATE(char, from_string, t...

Oracle translate 函数的用法, 以及和replace的区别

translate 是用来替换字符的函数 语法:           translate(char, from_str,to_str)   其中,char是待处理的字符串.         ...
  • nvd11
  • nvd11
  • 2013年04月02日 00:55
  • 1114

Oracle 中 replace函数和translate函数比较

简要比较:     replace:字符串级别的代替       如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd       tra...

oracle中的替换函数replace和translate函数

1.translate 语法:TRANSLATE(char, from, to) 用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串。             若from比...

oracle中translate与replace的区别

1、TRANSLATE 语法: TRANSLATE(string,from_str,to_str) 二、目的 返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字...

oracle中translate与replace的使用

来自:http://www.2cto.com/database/201203/124700.html 1.translate   语法:TRANSLATE(char, from, to)    ...
  • ytfy12
  • ytfy12
  • 2013年09月17日 13:03
  • 492
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE replace和translate函数详解
举报原因:
原因补充:

(最多只允许输入30个字)