translate函数的用法

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中的字符

select translate('ab23cd1', '.0123456789' || 'ab23cd1', '.0123456789')
  from dual




  • 10
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值