oracle函数里的循环使用方法,oracle  translate函数的使用(记住2点超简单)

刚不久碰到oracle translate函数,搞了半天,终于把这个弄懂了,其实还是蛮简单的,记录下方法

在学translate函数时,首先得会replace函数的使用,

replace语法:

replace(str,oldStr,newStr)

该函数时将str中存在的oldStr替换成newStr,

eg:

replace('I am a chinese,I love

China', 'China', '中国')='I am a chinese,I love

中国';

懂了这个,接下来介绍translate函数

translate语法:

translate(str,src,dest)

语法同replace()有点类似,但该替换是按照字符来替换的,意思是将str中含src中的字符替换成dest的字符.

因为该函数是针对字符的,所以src与dest的有效字符是一一对应的.(即:有效长度是一样的),也就是通常要求src的长度=dest的长度

eg:

src="1234",dest="@#%!",

str针对每一个字符,只要碰到1就替换成@,2替换成#...,

对应关系(1->@,2->#,3->%,4->!)

translate('19813','1234','@#%!')='@98@%'

1,重复的src:只取第一个字符对应的串,

translate('0我a12cbf9爱中国123aalaaa','a我aa','#!@@')='0!#12cbf9爱中国123##l###';

所有的a替换成#,我替换成!

对应关系(a->#,我->!,a->#,a->#)2,dest不可为'',也不可为null,这样的返回结果都是null;

translate('0我a12cbf9爱中国123aalaaa','a','')=null; 注:

length(null)!=0,length('')!=03,src的长度大于dest时,先取src对应长度dest的值进行一一对应,接下来的字符在src中,而不在dest中的字符str将会剔除该部分的值,

translate('我爱中国123爱','0123456789'||'我爱中国123爱','0123456789')='123'变量中的数字,用于提取字符串中的数字,

对应关系(0->0,1->1,2->2.....9->9[str中如果含有'我爱中国',则删除这几个字符])

translate('0129123中','0我a12cbf9爱中国1230123456789','0123456789')='034834'

对应关系(0->0,我->1,a->2,1->3,2->4,c->5,b->6,f->7,9->8,爱->9)

需删除的字符[中国1230123456789],中括号中红色部分为需要删除的部分,黑色部分已在对应关系中含有了4,字符区分大小写

5,如果src长度小于dest的长度,则dest多出的长度无用

总结下:

1),该函数是字符替换函数

2),src长度大于dest长度,先取相等长度对应后,再去除在src中,而不在dest中的字符,救过就right了

简单吧...

a4c26d1e5885305701be709a3d33442f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值