在转换如:219.150.150.150这样的IP时会出现最后一位缺失问题,转换成数字没问题,从数字往回转的时候就变成:219.150.150.15了,最后那个0不见了。
 if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_Int2IP]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
  drop   function   [dbo].[f_Int2IP]   
  GO   
    
  /**//*--数字   IP   转换成格式化   IP   地址   
    
  --邹建   2004.08(引用请保留此信息)--*/   
    
  /**//*--调用示例   
    
  select   dbo.f_Int2IP(3232235531)   
  select   dbo.f_Int2IP(212336641)   
  --*/   
  CREATE   FUNCTION   f_Int2IP(   
  @IP   bigint   
  )RETURNS   varchar(15)   
  AS   
  BEGIN   
  DECLARE   @re   varchar(15)   
  SET   @re=''   
  SELECT   @re=@re+'.'+CAST(@IP/ID   as   varchar)   
  ,@IP=@IP%ID   
  from(   
  SELECT   ID=CAST(16777216   as   bigint)   
  UNION   ALL   SELECT   65536   
  UNION   ALL   SELECT   256   
  UNION   ALL   SELECT   1)a   
  RETURN(STUFF(@re,1,1,''))   
  END   
DECLARE   @re   varchar(15)   
修改成DECLARE   @re   varchar(16)   
就没毛病了。