爲了把點格式的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 廣西網通
不過查詢效率真是太低了,很慢。