SQL整型转换为点分IP

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

 ALTER   FUNCTION [dbo].[GetIntToIP](@ip BIGINT)
     RETURNS NVARCHAR(50)
     AS
     BEGIN
   DECLARE @StrResult NVARCHAR(50)   --返回的结果
   DECLARE @IPIndex BIGINT --转换后的IP地址
   DECLARE @ZhiShu INT --指数
   DECLARE @ZhiLing BIGINT  --高八位置0
   DECLARE @num INT --循环的次数
   SET @StrResult=''
   SET @IPIndex=0
   SET @ZhiShu=0
   SET @ZhiLing=0
   SET @num=1
   SET @ZhiLing=1
   WHILE (@num<5)
   BEGIN
    SET @ZhiShu=32-8*@num
    SET @IPIndex=@ip
      WHILE (@ZhiShu>0)
       BEGIN
        SET @IPIndex=@IPIndex/2
        --高八位置0
        SET @ZhiLing=@ZhiLing*2
        SET @ZhiShu=@ZhiShu-1
       END
    IF (@num<>4)
    SET @ip=@ip%@ZhiLing 
    SET @StrResult=@StrResult+CONVERT (VARCHAR(40),@IPIndex)
    IF (@num<>4)
    SET @StrResult=@StrResult+'.'
    SET @num=@num+1
    SET @ZhiLing=1
   END
   RETURN @StrResult
     END
    
    

posted @ 2009-07-30 23:36  NewSoftsNet  Views(320)  Comments(0Edit  收藏  举报