在数据库中我们可能经常会遇到对一些数据进行格式化,比如IP地址,有时要为IP地址补零,有时又要为IP地址去除多余的零,今天来介绍后者,其实一般IP地址都是用点分十进制表示的,点之前后都是一个数字,只要我们先截取点间的各个数字字符,然后通过plsql的to_number将字符转化为数字就达到了去零的效果,然后我们可以将得到的数字通过to_char转化字符串,并重组即可,为此写了个存储过程,代码如下:
create or replace function xipaddr_new(in_strIp in varchar2)
return varchar2
is
strTemp varchar2(16);
strIp varchar2(16);
strRet varchar2(16);
begin
strIp:= trim(in_strIp);
if length(strIp) < 7 then --只进行简单的判断
return '';
end if;
strTemp := substr(strIp,1,instr(strIp,'.')-1);
strRet:= to_char(to_number(strTemp)) ||'.';
strIp := substr(strIp,instr(strIp,'.')+1);
strTemp := substr(strIp,1,instr(strIp,'.')-1);
strRet:= strRet || to_char(to_number(strTemp))|| '.';
strIp := substr(strIp,instr(strIp,'.')+1);
strTemp := substr(strIp,1,instr(strIp,'.')-1);
strRet:= strRet || to_char(to_number(strTemp))||'.';
strIp := substr(strIp,instr(strIp,'.')+1);
strRet:= strRet || to_char(to_number(strIp));
return strRet;
end;