手里有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