日期:2014-05-18  浏览次数:20607 次

.net , C#.net ,IP数据库匹配
请问各位大哥,我在网上下了一个IP数据库下来,看到那些数据懵了,我不知道怎么样匹配




它的数据是这样的
  IP1 IP2 country city


2375745536 2375919871 黑龙江省鸡西市 东北虎




  请问,如果我知道了一个IP地址,我该怎么匹配啊???

  各位大哥帮帮忙啊,在线等!!!!


------解决方案--------------------
SQL code
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

--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.f_IP2Int(
@ip char(15)
)RETURNS bigint
AS
BEGIN
    DECLARE @re bigint
    SET @re=0
    SELECT @re=@re+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

--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.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
GO