oracle sql 去掉汉字保留数字或字母

一、语法
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


本文来自iDB Stock:http://www.idb-stock.net/idb/2011/06/15/176.html
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值