oracle sql去掉汉字保留数字或字母
首先讲一下oracle translate的用法:
一、语法
TRANSLATE(string,from_str,to_str)
二、用途
返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE是REPLACE所提供的功能的一个超集。如果from_str比 to_str长,那么在 from_str中而不在to_str中的额外字符将从string中被删除,因为它们没有相应的替换字符。to_str不能为空。Oracle将空字符串解释为NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL。
三、transate使用示例
dw@dw>column col1 format a10
dw@dw>column col2 format a10
dw@dw>select translate('helloword',
2 'abcdefghijklmnopqrstuvwxyz',
3 'zyxwvutsrqponmlkjihgfedcba') col1,
4 translate('hbcadhlk',
5 'abcdefghijklmnopqrstuvwxyz',
6 '123456') col2
7 from dual;
COL1 COL2
---------- ----------
svooldliw 2314
已选择 1 行。
已用时间: 00: 00: 00.01
我们在实际工作中,经常用到的去掉汉字保留数字或字母,也有可能是去掉数字或字母,保留汉字。
本文将用oracle sql tranlsate函数实现去掉汉字、保留数字;去掉数字和母、保留汉字,本文所用到sql如下:
create table oracle_extract_number (
id number,
name varchar2(50)
);
insert into oracle_extract_number(id,name) values(1,'32提取汉字中11222的333数44411字11');
insert into oracle_extract_number(id,name) values(1,'ad提取汉字中11dddfw222的3ddd33数444dd11字11');
insert into oracle_extract_number(id,name) values(1,'abd2提取汉字中11222的333数44ddd411字11');
insert into oracle_extract_number(id,name) values(1,'45提取汉233字中1ddd1222ddd的333数44411字11');
insert into oracle_extract_number(id,name) values(1,'78提取汉字中112SDD22的33ddad3数44ddfdf411字11');
commit;
1.用oracle translate去掉汉字和字母,提取数字
dw@dw>select id,name,
2 translate(name, '#' ||
3 translate(name, '0123456789', '#'), '/') "oracle extract number"
4 from oracle_extract_number;
ID NAME oracle extract number
---------- -------------------------------------------------- ------------------------------
1 32提取汉字中11222的333数44411字11 32112223334441111
2 ad提取汉字中11dddfw222的3ddd33数444dd11字11 112223334441111
3 abd2提取汉字中11222的333数44ddd411字11 2112223334441111
4 45提取汉233字中1ddd1222ddd的333数44411字11 45233112223334441111
5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11 78112223334441111
已选择5行。
已用时间: 00: 00: 00.03
2.用oracle translate去掉汉字,提取数字和字母
dw@dw>select id,name,
2 translate(name,'#'||
3 translate(name,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','#')
4 ,'/') "oracle extract number"
5 from oracle_extract_number;
ID NAME oracle extract number
---------- -------------------------------------------------- ------------------------------
1 32提取汉字中11222的333数44411字11 32112223334441111
2 ad提取汉字中11dddfw222的3ddd33数444dd11字11 ad11dddfw2223ddd33444dd1111
3 abd2提取汉字中11222的333数44ddd411字11 abd21122233344ddd41111
4 45提取汉233字中1ddd1222ddd的333数44411字11 452331ddd1222ddd3334441111
5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11 78112SDD2233ddad344ddfdf41111
已选择5行。
已用时间: 00: 00: 00.00
3.用oracle translate去掉数字和字母,提取汉字
dw@dw>select id,
2 name,
3 translate(name,
4 '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
5 '/') "oracle extract number"
6 from oracle_extract_number;
ID NAME oracle extract number
---------- -------------------------------------------------- ---------------------------
1 32提取汉字中11222的333数44411字11 提取汉字中的数字
2 ad提取汉字中11dddfw222的3ddd33数444dd11字11 提取汉字中的数字
3 abd2提取汉字中11222的333数44ddd411字11 提取汉字中的数字
4 45提取汉233字中1ddd1222ddd的333数44411字11 提取汉字中的数字
5 78提取汉字中112SDD22的33ddad3数44ddfdf411字11 提取汉字中的数字
已选择5行。
已用时间: 00: 00: 00.01