为了把点格式的ip地址转换成整数表示的ip地址,创建如下MYSQL函数:
create function ip_calc(ip varchar(20)) returns bigint(20)
return
substring_index(ip,'.',1)*256*256*256
+substring_index(substring_index(ip,'.',2),'.',-1)*256*256
+ substring_index(substring_index(ip,'.',-2),'.',1)*256
+substring_index(ip,'.',-1);
作用是:
点格式的ip地主:115.46.155.242
整数形式的ip地址:1932434418
计算方法:115*256*256*256+46*256*256+155*256+242=1932434418
sql语句:select ip_calc('115.46.155.242');
在MySql中定位的方式为:
select * from data_ip where
ipstart <=ip_calc('115.46.155.242')
and
ipend >= ip_calc('115.46.155.242');
查询结果:
ipstart ipend ip_area
1932427264 1932460031 广西网通
不过查询效率真是太低了,很慢。