加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

translate函数的用法

(2012-11-12 21:35:12)
标签:

translate

函数

oracle

替换函数

王显伟

分类: Oracle笔记

语法:

translate(string,from_str,to_str)
    执行时,translate依次检查string中的每个字符是否在from_str中存在,如果不存在,那么这个string中的字符直接返回,如果存在,translate会记下这个字符在from_str中的位置,然后用to_str的同样位置的字符代替string中的这个字符作业返回结果,
举例如下
   SQL> select translate('ac','ab2','00') from dual;

   结果:0c

   分析结果如下:a在ab2中进行查找,位置是1,返回00中第一个字符0,然后c在ab2中进行查询,不存在则直接返回c, 所以结果是0c,这是最简单的,更个有空格或长度不一样的!

   如果from_str可以比to_str长,也就是from_str的字符数目可以比to_str多,在from_str中多出来的字符称为"额外字符",也就是from_str中的位置在to_str中找不到的,比如

   SQL> select translate('ac1','abc123','abc') from dual;

   结果:ac
   这里from_str中的1的位置是4,但是to_str的总长度是3,没有4,所以在from_STR中的123都是额外字符
如果string中的字符在from_str的额外中出现,那么string中这些字符将在返回时被删除,所以1虽然在abc123
中出现,但是abc中不存在第四个字符,所以删除返回值,结果为ac
举例如下
   需要注意的是,to_str不能是NULL或者'',否则会返回空值,translate也不能用于CLOB,再说得简单一点,也就是
   1、如果string中的字符如果在from_string中没有,那么返回时被保留
   2、如果string中的字符是from_string中的"额外字符",那么返回时被删除
   3、如果string中的字符在from_string中找到,且在to_string中有相应位置的字符,那么返回时用to_string中的字符替换string中的字符

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有