日期:2014-05-18  浏览次数:20461 次

求高手。急求一存储过程。。。。
需求:现有一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类型,自然就连续了。