求高手。急求一存储过程。。。。
需求:现有一IP表 字段(id,ipfrom,ipto,ipaddress,pid,cid)
用于注册时检测IP自动填入省份和城市.
由于表太大,现在准备合并连续段的IP。
实例表数据:
id | FINT | TINT | ipfrom | ipto | 地址 |省 |市
—————————————————————————————————————
1 |0 | 255255255 | 0.0.0.0 |0.255.255.255 |IANA CZ88.NET |71|475
2 |1000000000| 1000000000| 1.0.0.0 |1.0.0.0 |IANA CZ88.NET |71 |475
3 |1000000001| 1255255255| 1.0.0.1 |1.255.255.255 |美国 CZ88.NET |71 |475
19 |2000000000| 2255255255| 2.0.0.0 |2.255.255.255 |IANA CZ88.NET |71 |475
149|3000000000| 3255255255| 3.0.0.0 |3.255.255.255 |美国 新泽西通 |71 |475
比喻说这几天数据就完全可以合并的了。地址取被合并到的最后一条记录的地址。合并后的记录为第一个被合并的ipfrom到最后一个被合并的ipto.注意有的连续的记录但是不是一个省份和城市的就不能合并.
以下几种类似情况合并:
上个记录的ipto为:1.255.255.255 下个记录的ipfrom为:2.0.0.0 (加第一位)
上个记录的ipto为:1.250.255.255 下个记录的ipfrom为:1.251.0.0 (加第二位)
上个记录的ipto为:1.250.2.255 下个记录的ipfrom为:1.251.3.0 (加第三位)
上个记录的ipto为:1.250.2.1 下个记录的ipfrom为:1.250.2.2 (加第四位)
------解决方案--------------------把IP转为BIGINT类型,自然就连续了。