"一、语法 TRANSLATE(string,from_str,to_str) 二、用途 返回将(所有出现的)from_str 中的每个字符替换为 to_str 中的相应字符以后的 string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from .."

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

本贴最后更新于 745 天前,其中的信息可能已经渤澥桑田

一、语法 
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',  'abcdefghijklmnopqrstuvwxyz',   'zyxwvutsrqponmlkjihgfedcba') col1,   translate('hbcadhlk',   'abcdefghijklmnopqrstuvwxyz',   '123456') col2  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,  translate(name, '#' ||   translate(name, '0123456789', '#'), '/') "oracle extract number"  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,   translate(name,'#'||  translate(name,'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789','#')   ,'/')  "oracle extract number"   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,  name,   translate(name,  '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',   '/') "oracle extract number"  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 

  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    87 引用 • 109 回帖 • 658 关注
感谢    关注    收藏    赞同    反对    举报    分享
回帖    
请输入回帖内容...