ITPub博客

首页 > 数据库 > Oracle > oracle sql去掉汉字保留数字或字母

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

Oracle 作者:zangqianglei 时间:2015-05-12 17:09:33 0 删除 编辑

首先讲一下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

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25954236/viewspace-1651047/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORACLE一些巡检sql
请登录后发表评论 登录
全部评论

注册时间:2015-02-06

  • 博文量
    22
  • 访问量
    104123