1、全角、半角互转:
to_single_byte(c)转换成半角
to_multi_byte(c)转换成全角
2、使用正则表达式去除非数字、中文字符自定义函数:
create or replace function FN_REG_REPLACEOTHER(str1 varchar2) return varchar2
is
t_str varchar2(300);
begin
--替换空格、,。,.等字符
t_str:=regexp_replace(t_str,'[[:punct:]|[:blank:]|[:space:]|[:cntrl:]]','') ;
return t_str;
end FN_REG_REPLACEOTHER;
3、使用正则表达式去掉多字符连接时中间多个“,“号,如A,B,,C,D,E,,,, 去掉后结果为:A,B,C,D,E
create or replace function FN_REG_REPLACE(str1 varchar2) return varchar2
is
t_str varchar2(1000);
begin
t_str := REGEXP_REPLACE(str1, '(,){2,}',',');
return REGEXP_REPLACE(t_str,'(^\,|\,$)','');
end FN_REG_REPLACE;
4、只提取某一字段中的中文部分
translate(字段名, '*0123456789','*')
如:select translate('中国人123456是最棒的8899', '*0123456789','*') from dual ;
结果:中国人是最棒的
5、只提取某一字段中的数字部分
translate(字段名, '0'||translate(字段名, '*0123456789','*') ,'0')
如:select translate('中国人123456是最棒的8899', '0'||translate('中国人123456是最棒的8899', '*0123456789','*') ,'0') from dual ;
结果:1234568899
6、where子句中CASE妙用
where 字段=(case when 1=1(你想加的条件) then (你想取的值)end)
说明:效果是如果没有你要的条件,相当于没有WHERE子句限制。