TRANSLATE函数(DB2、Oracle)区别

1. TRANSLATE

TRANSLATE(string-expression-+----------------------------------------------+-)-><
                               '-,--to-string--+----------------------------+-'
                                               |                 .-,--' '-. |
                                               '-,--from-string--+--------+-'
                                                                 '-,--pad-'

即此函数最多可以包含4个参数。

TRANSLATE(字符串表达式,目标字符串,源字符串,填补字符串)

其中
1.“字符串表达式”是你想要处理的字符串
2.“目标字符串”是你想要转换成的目标字符串。
3.“源字符串”是你想要转换的字符串。
4.“填补字符串”是在目标字符串比源字符串短的情况下,用于填充目标字符的。如果不包含此参数则取默认值,默认值为' '(一个空格)。

TRANSLATE和REPLACE的区别在于replace是用于字符串的替换,属于整体的替换,而TRANSLATE是逐字符的替换,
比如  'abc'  'Abc' 
replace 是找到字符串表达式中的所有'abc'字符,全部整体替换为'Abc' 即可,而
TRANSLATE则是先找到所有的A,替换为a,然后再找到所有的b,全部替换为c,最后,找到全部的c,替换为c

当整个TRANSLATE函数只有参数的时候,相当于UPPER()函数


SELECT 'abcd'                                       ---abcd                
      ,TRANSLATE('abcd')                        ---ABCD      相当于UPPER()函数  
      ,TRANSLATE('abcd','','b')                 ---a cd      把b替换为空格,此时DB2解析目标字符串是没有的,所以会用填补字符串' '来替换b   
      ,TRANSLATE('abcd','','a','')               ---bcd       把a替换为空   
      ,TRANSLATE('abcd','A','A')               ---abcd      把A替换为A,因为不存在A,所以相当于什么也不做
      ,TRANSLATE('abcd','A','a')               ---Abcd      把a替换为A   
      ,TRANSLATE('abcd','A','ab')              ---A cd      把a替换为A,把b替换为默认的pad,也就是' '
      ,TRANSLATE('abcd','A','ab',' ')          ---A cd      同上,只不过指定了pad
      ,TRANSLATE('abcd','A','ab','z')          ---Azcd      把a替换成A,b替换成z
      ,TRANSLATE('abcd','AB','a')              ---Abcd      把a替换成A,由于替换的目标字符串,比源字符串长,因此忽略多出的部分。  
FROM   sysibm.dual         

oracle里:

             TRANSLATE(str1,str2,str3)

              用str3里对应的字段,逐一替换str1中的str2字段。

            例  

                        select  TRANSLATE('12345bcdm','1234567abcdem','9999999xxxxxx') from dual ;

                         结果显示 : 99999xxxx

                       select  TRANSLATE( '2011-01-01',  ' 0123456789-','')  from dual

                         结果显示 :null(因oracle里没有空串)

              即缺省替换为 ' '(空格)

db2 里:

            TRANSLATE(str1,str2,str3)

             于oracle里刚好相反,以str2替换str3

             例

                      select  translate('012-38(3)','***','-()')  from sysibm.SYSDUMMY1

                      结果为:012*38*3*

                     select  TRANSLATE( '2011-01-01', '', ' 0123456789-' )  from sysibm.SYSDUMMY1  

                      结果为   ''   即空串(不是null,上方oralce里第二个例子结果为null,因oracle里没有空串)

                  同样缺省替换为' '(空格)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值