SQL> select translate('huangbaokang','ag','89') from dual;
输出
hu8n9b8ok8n9
该函数是一一对应替换字符,如上,a替换成8,g替换成9
语法:
translate(string1,string2,string3)
如果一个字符同时存在string1和string2,而不存在string3中,则该字符将被字符串string1中删除
SQL> select translate('hello','def','#') from dual;
TRAN
----
hllo
如上d替换成#,e没有在string3出现,将被删除
利用这个特性,我们可以实现如下需求
1、去除字符串中的数字
SQL> select translate('huang123 bao456 k88ang','#1234567890','#') from dual;
TRANSLATE('HUA
--------------
huang bao kang
技巧,#替换成#,若不加这个,string3变成空串了,其他数字都进行删除。
2、统计字符串中某个字符(字符串)出现的次数
SQL> select translate('huangbaokang','ahuangbaokang','a') from dual;
TRA
---
aaa
SQL> select translate('huangbaokang','a'||'huangbaokang','a') from dual;
TRA
---
aaa
SQL> select length (translate('huangbaokang','ahuangbaokang','a')) from dual;
LENGTH(TRANSLATE('HUANGBAOKANG','AHUANGBAOKANG','A'))
-----------------------------------------------------
3
3、统计某个字符串在另一个字符串中出现的次数
select (length(string1)-length(replace(string1,string2)))/length(string2) from dual
这个也很好理解,感觉像学数学一样,看原字符串string1中有多少个string2,总长度减去替换之后的长度,再除以本身string2的长度。
查询我本人姓名huangbaokang中出现了多少次ang
SQL> select (length('huangbaokang')-length(replace('huangbaokang','ang')))/length('ang') from dual;
(LENGTH('HUANGBAOKANG')-LENGTH(REPLACE('HUANGBAOKANG','ANG')))/LENGTH('ANG')
----------------------------------------------------------------------------
2
4、去除字符串中的空格
SQL> select translate('huang bao kang','# ','#') from dual;
TRANSLATE('H
------------
huangbaokang