oracle数据库translate函数

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


你可能感兴趣的:(oracle,数据库)