检查IP地址属于那个IP段,转成数字不就得了,我怎么这么蠢。

20190603151100.png
手里有5W+的IP地址需要检查一下所在地,咱也买不起专业库,于是下载了纯真IP库,管他准确率是多少了。结果IP段难住了,一会儿判断位置,一会判断点号的。不是专业的人,脑筋就是转不来啊。MySQL都有INET_ATON了,我就不能转成个数字在比较了?还好有个baidu可以查查。
SQL SERVER 函数如下:

ALTER FUNCTION [dbo].[FN_IPtoInt](@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
发表新评论