登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

oracle TRANSLATE 函数学习  

2011-01-23 08:41:20|  分类: Oracle数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

65.1 问题描述

在参加PL/SQL测试时http://www.plsqlchallenge.com/pls/apex/f?p=10000:651:2769704580925415::NO::P651_QUIZ_ID:1765&cs=3D725EB6841452F9D6CCBD0AD6C94AF75

有个字符串替换的题目,我多选了一个TRANSLATE的答案,看来对该函数的用法还是比较糊涂,所以我就翻阅oracle sql reference来学习下。

65.2 解决方案

本资料翻译自Oracle9i SQL Reference Release 2 (9.2) October 2002 Part No. A96540-02

语法图如下:

TRANSLATE函数对于char字符串参数中的每一个字符,如果该字符在from_string参数中存在,则替换为对应的to_string参数中的字符,然后返回替换后的值,当然,对于char字符串参数中的字符没有出现在from_string参数中则不用替换。参数from_string中的字符个数可以多于to_string参数中的字符个数,是这种情况的话,那么多出的字符就没有对应的字符来替换,这些字符就会从char参数中移除。你不能使用空字符串来作为to_string参数以用来移除char参数中的所有字符,oracle将空字符解释为null,如果这个函数中任何一个参数为null,那么将返回null。值得注意的是该函数不能直接作用于CLOB数据类型,当然啦,可以通过将CLOB数据类型转换为字符串。

示例如下:

示例一:将数字转换为9,其他的大写字母转换为X,然后返回。

SELECT TRANSLATE('2KRW229',
                 '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                 '9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "License"
  FROM DUAL

示例二:将数字保留,将其他的大写字母移除。

SELECT TRANSLATE('2KRW229',
                 '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                 '0123456789') "Translate example"
  FROM DUAL

罗勇补充示例如下:

示例三:示例证明是按照字符来处理,不是按照字节来处理,如果to_string的字符数比from_string多的话,多出的字符数似乎没有什么用处,也不会引发异常。

SELECT TRANSLATE('我是中国人,我爱中国', '中国', 'China') "Translate example"

  FROM DUAL

示例四:下面的示例证明,如果from_string的字符数大于to_string,那么多出的字符会被移除,也就是ina三个字符会从char参数中移除,当然区分大小写啦。

SELECT TRANSLATE('I am Chinese, I love China', 'China', '中国') "Translate example"

  FROM DUAL

示例五:以下示例证明,如果第二个参数为空字符串,整个返回null。

SELECT TRANSLATE('2KRW229',
                 '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                 '') "License"
  FROM DUAL

 

示例六:在银行转帐时经常看见账户人只显示姓名的最后一个字,其余的用星号代替,我就用translate来做个类似的东西吧。

SELECT TRANSLATE('中国人',

                 substr('中国人',1,length('中国人') - 1),

                 rpad('*',length('中国人'),'*')) "License"

  FROM DUAL

素格格新疆特产店--做最好新疆特产的搬运工。
本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!
oracle TRANSLATE 函数学习 - 罗勇 - 罗勇的博客
 
  评论这张
 
阅读(896)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018