我们在实际工作中常常要使用去特殊字符的功能,特别是插入到数据库中的数据,我们为了保证数据的质量,往往需要对数据进行清洗,
我们在实际工作中常常要使用去特殊字符的功能,特别是插入到数据库中的数据,我们为了保证数据的质量,往往需要对数据进行清洗,就是去掉特殊字符,我们处理问题的思路是:判断字符串中的每个字符是不是中文,如果是中文,将他们按照顺序连接起来,如果不是,不要。
根据实际业务需求,共有2中解决方案:
方案一:
使用数据库自带函数length,lengthb。
中文下length返回的是字符个数,中文占1字符,lengthb返回的是字节个数,中文占2字节,根据中文的特性即可解决,但是实际情况往往不是特别理想,往往还存在着一些特殊字符,这些特殊字符和中文的字符数和字节数一致,这时我们就不能准确判断数据库中的中文字符了,为了解决这个问题,建议方案二。
方案二:
使用ascii码来区分中文和其它字符,中文的ascii码值的范围是45217~63486,根据这个来实现,,我们就需要使用oracle中的函数ascii,用它来返回ascii值。
这种方式可以完美区分中文字符和其它字符。
create or replace function getcusttext(custname varchar2) return varchar2 is
result varchar2(100);
tmp_custname varchar2(100);
count_str number;
i number:=1;
str_ascii number;
current_char varchar2(10);
begin
select length(custname) into count_str from dual;
while i current_char:=substr(custname,i,1);
select ascii(current_char) into str_ascii from dual;
if str_ascii>45216 then
tmp_custname:=tmp_custname||current_char;
end if;
i:=i+1;
end loop;
result:=tmp_custname;
return(result);
end getcusttext;
以上是oracle中的实现方式,通过该方式可以快速,准确的识别中文字符。
在centos 6.4下安装oracle 11gr2(x64)
oracle 11gr2 在vmware虚拟机中安装步骤
debian 下 安装 oracle 11g xe r2
oracle linux 6.5安装oracle 11.2.0.4 x64
本文永久更新链接地址: