设为首页 收藏本站
查看: 707|回复: 0

[经验分享] Oracle translate 函数的用法, 以及和replace的区别

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-28 17:40:17 | 显示全部楼层 |阅读模式
translate 是用来替换字符的函数
语法:
          translate(char, from_str,to_str)

其中,char是待处理的字符串.
               from_str是按顺序排列若干个要被替换的字符集合,注意是字符集合而不是字符串。
               to_str 是按顺序对应from_str要被替换成的字符集合。

例如:
              translate('abcd','ab','AB')
  执行上面语句后, 'abcd'中的'a' 被'A'替换,  'b'被'B'替换。所以返回"ABcd"


这样看上去跟replace函数很类似。


但是,在
           replace('abcd','ab','AB') 语句中,   是把'abcd'中的 'ab' 整个字符串替换成'AB',  应该能看出与上面translate的区别了吧。
举个例子
          translate('acbd','ab','AB')  会返回"AcBd" ,因为'a' 被'A'替换,  'b'被'B'替换嘛,替换是每1个字符单独处理的。
          而 replace('acbd','ab','AB')  则返回"acbd”, 因为字符串'ab'找不到啊, 所以没有做到替换处理。

下面写一些translate的一些要注意的特性。

1.
translate('abcd','abc','A') 中,    字符a会被'A'替换, 而b与c则没有指定替换成什么,oracle会默认替换成null。所以返回'Ad'.


2.
translate('abcd','abc','') 中, 连A被替换的字符也被省略掉了,是不是因为abc 3个 字符都被替换成null,所以返回d呢?
答案是错的, 如果to_str是blank('')或者null,则所有字符都会替换成null, 所以这个表达式返回null.



3.translate有许多特别的用途,
例如 我想将1个字符串内的数字全部去掉,则可以用
         
translate(str,'a1234567890','a')
这样的话字符串的a(如果存在的话)会被替换成自己a,而其他数字会替换成null,注意是null而不是空格啊。
或者
translate(str,' 1234567890',' ')
用空格来代替上面的'a'也ok,注意from_str和to_str都是以空格开头啊。



而不能用
translate(str,'1234567890','') ,  参考上面的特性2,会返回null的啊。





我们不生产代码,只是做代码的搬运工!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22820-1-1.html 上篇帖子: win7 安装oracle 10g 未生成监听文件 导致配置监听时无法保存 下篇帖子: OEL5.8 x64 安装oracle数据库环境配置脚本 replace Oracle
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表