IP address 與 bigint 之間的轉換
SELECT [dbo].f_IP2Int('60.173.12.140') -- 1017973900
select dbo.f_Int2IP(1017973900) -- 60.173.12.140
select dbo.f_IP2Int('12.168.0.1') -- 212336641
select dbo.f_Int2IP(212336641) -- 12.168.0.1
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_IP2Int]
GO
/*--字元型 IP 地址轉換成數字 IP
--鄒建 2004.08(引用請保留此資訊)--*/
/*--呼叫示例
select dbo.f_IP2Int('192.168.0.11')
select dbo.f_IP2Int('12.168.0.1')
--*/
CREATE FUNCTION f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @ [email protected]+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)A
RETURN(@re)
END
GO
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 @ [email protected]+'.'+CAST(@IP/ID as varchar)
,@[email protected]%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
資源 :
(結束)