设为首页 收藏本站
查看: 990|回复: 0

[经验分享] oracle sql 去掉汉字保留数字或字母

[复制链接]

尚未签到

发表于 2016-7-28 08:30:56 | 显示全部楼层 |阅读模式
一、语法
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250392-1-1.html 上篇帖子: 转:PLSQL developer 连接不上64位Oracle 解决办法 下篇帖子: Oracle:ORA-12560: TNS: 协议适配器错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表