oracle sql去掉漢字保留數字或字母

zangqianglei發表於2015-05-12

首先講一下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部落格 ” ,連結:http://blog.itpub.net/25954236/viewspace-1651047/,如需轉載,請註明出處,否則將追究法律責任。

相關文章