数字转IP地址函数

--数字转IP地址函数:
IF OBJECT_ID('dbo.fn_IP2Str')>0
    DROP FUNCTION dbo.fn_IP2Str
GO
CREATE FUNCTION [dbo].[fn_IP2Str] (
    @InIP BIGINT
)
RETURNS NVARCHAR(15)
AS
BEGIN
    IF @InIP IS NULL
       RETURN '0.0.0.0'
    DECLARE @ip BIGINT
    SET @ip = @InIP
    SET @ip = @ip + 0x100000000
    RETURN
       CAST(((@ip & 0xff000000) / 0x1000000) AS NVARCHAR(3)) + '.' +
       CAST(((@ip & 0xff0000) / 0x10000) AS NVARCHAR(3)) + '.' +
       CAST(((@ip & 0xff00) / 0x100) AS NVARCHAR(3)) + '.' +
       CAST((@ip & 0xff) AS NVARCHAR(3))
END
GO
 
--调用示例:
SELECT dbo.fn_IP2Str(4294967295)


-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
IF OBJECT_ID('dbo.f_Int2IP')>0
    DROP FUNCTION dbo.f_Int2IP
CREATE FUNCTION f_Int2IP
(
    @IP BIGINT
)
RETURNS VARCHAR(15)
AS
BEGIN
    DECLARE @re VARCHAR(16)  
    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  
GO
--调用示例:
select dbo.f_Int2IP(333444343)
原文地址:https://www.cnblogs.com/accumulater/p/6225642.html