一、语法
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
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于