title: oracle translate
date: 2019-09-22 15:34:58
tags: oracle
translate的基本用法
1.translate作用是一次替换多个单个的字符。
2.基本用法,字符对应替换。
例子:
select translate(‘01234567891123’,‘123’ ,‘abcdefg’) from dual; --1替换为a,2替换为b,3替换为c
结果:0abc456789aabc。
效果等同于select replace(replace(replace(‘01234567891123’, ‘1’, ‘a’), ‘2’, ‘b’), ‘3’, ‘c’) from dual;
3.如果替换字符整个为空字符 ,则直接返回null
select translate(‘1234567’,‘123’ ,’’) from dual;
结果:null;
4.剔除特定字符,比如剔除数字保留汉字
select translate(‘苏州市干将西路1390号4F’,’#0123456789’ ,’#’) from dual;
结果:苏州市干将西路号F
判断是否为数字
create or replace function fn_is_number(v_data varchar2) return varchar2 is
--判断字符串是否为数字
Result number;
begin
begin
if instr(v_data, ' ') > 0 then
return 0;
end if;
select case
when trim(translate(v_data, '0123456789', ' ')) is null then
1
else
0
end into Result
from dual;
exception
when others then
Result:=0;
end ;
return(Result);
end fn_is_number;
示例:select fn_is_number(‘12345’), fn_is_number(’ 12345 ') from dual;
结果:1 0