Translate函数的的探讨
Translate主要是用来做字符串的替换的,对于字母和数字来说,是一个字符替换一个字符
如:
下面的语句会把 'f' 替换成 'v' 替换成 'g'
select Translate('fasdbfasegafs','fa','vg' ) value from dual;
VALUE
-------------
vgsdbvgseggvs
但是对于汉字来说,则会根据不同的情况而有点不同
如
select Translate('fasdbfasegas','fa','我' ) value from dual;
VALUE
-----------
我sdb我segs
select Translate('fasdbfasegafs','fa','你' ) value from dual;
VALUE
-------------
你sdb你seg你s
第一个语句的fa替换成'我',由于最后面的a对应不到而用空代替
现在看第二个语句,前面的fa替换成了'你'没有问题,但是后面的af居然也是一样的替换?!
另外:
select Translate('fasdbfasegafs','fa','你我' ) value from dual;
VALUE
-------------------
你我sdb你我seg我你s
f被替换成'你'而a被替换成了'我'
可见oracle会根据替换字符串的不同而进行'自适应'
另外Translate还有一个小功能:
select trim(Translate('fasdbfa12vr2segas','abcdefghijklmnopqrstuvwxyz',' ')) value from dual;
VALUE
-----
122
可以求出一个字符串中的数字
Translate主要是用来做字符串的替换的,对于字母和数字来说,是一个字符替换一个字符
如:
下面的语句会把 'f' 替换成 'v' 替换成 'g'
select Translate('fasdbfasegafs','fa','vg' ) value from dual;
VALUE
-------------
vgsdbvgseggvs
但是对于汉字来说,则会根据不同的情况而有点不同
如
select Translate('fasdbfasegas','fa','我' ) value from dual;
VALUE
-----------
我sdb我segs
select Translate('fasdbfasegafs','fa','你' ) value from dual;
VALUE
-------------
你sdb你seg你s
第一个语句的fa替换成'我',由于最后面的a对应不到而用空代替
现在看第二个语句,前面的fa替换成了'你'没有问题,但是后面的af居然也是一样的替换?!
另外:
select Translate('fasdbfasegafs','fa','你我' ) value from dual;
VALUE
-------------------
你我sdb你我seg我你s
f被替换成'你'而a被替换成了'我'
可见oracle会根据替换字符串的不同而进行'自适应'
另外Translate还有一个小功能:
select trim(Translate('fasdbfa12vr2segas','abcdefghijklmnopqrstuvwxyz',' ')) value from dual;
VALUE
-----
122
可以求出一个字符串中的数字