现在我有一IP库如:
INSERT INTO `ip` VALUES ('78956', '61.189.254.0', '61.189.255.255', '贵州省贵阳市', '海华95821拨号');
INSERT INTO `ip` VALUES ('78957', '61.190.0.0', '61.190.2.85', '安徽省合肥市', '电信');
INSERT INTO `ip` VALUES ('78958', '61.190.2.86', '61.190.2.86', '安徽省滁州市', '红枫网吧');
INSERT INTO `ip` VALUES ('78959', '61.190.2.87', '61.190.3.231', '安徽省合肥市', '电信');
INSERT INTO `ip` VALUES ('78960', '61.190.3.232', '61.190.3.232', '安徽省合肥市', '胜利路元一星空急速网吧');
INSERT INTO `ip` VALUES ('78961', '61.190.3.233', '61.190.9.255', '安徽省合肥市', '电信');
INSERT INTO `ip` VALUES ('78962', '61.190.10.0', '61.190.10.255', '安徽省', '电信');
INSERT INTO `ip` VALUES ('78963', '61.190.11.0', '61.190.11.255', '安徽省贵池市', '电信');
INSERT INTO `ip` VALUES ('78964', '61.190.12.0', '61.190.13.255', '安徽省', '电信');
INSERT INTO `ip` VALUES ('78965', '61.190.14.0', '61.190.15.255', '安徽省宿州市', '电信');
INSERT INTO `ip` VALUES ('78966', '61.190.16.0', '61.190.16.61', '安徽省合肥市', '电信');
INSERT INTO `ip` VALUES ('78967', '61.190.16.62', '61.190.16.62', '安徽省合肥市', '美菱大道怡园网吧(包河浴池附近)');
INSERT INTO `ip` VALUES ('78968', '61.190.16.63', '61.190.20.133', '安徽省合肥市', '电信');
现在我想如果有一个IP判断它是属于哪个城市,用mysql存储过程怎么实现啊。。谢谢。。

解决方案 »

  1.   

    select  城市
    from ip
    where INET_ATON(youreip) between INET_ATON(第二列) and INET_ATON(第三列);
      

  2.   

    用1楼的方法就行了。   INET_ATON
      

  3.   

    INET_ATON就是将ip转换成整型的函数啊
      

  4.   

    110.112.27.*  这种容易,你可以直接替换 * 为 1, 成为 110.112.27.1 再查询。
     220.191.23*.* ,而这种根本不符合IP表达形式,没有这样表达一个网段的。不过同样,你可以替换为1后处理。
    where INET_ATON(replace(youreip,'*','1')) between INET_ATON(第二列) and INET_ATON(第三列);