根据纯真IP库求查询ip地址的sql查询语句
上面的图片是数据库中的字段 类型都是 nvarchar类型
怎么写查询IP的sql语句呢 例如说 查询ip为“183.12.241.174”的SQL语句
------解决方案--------------------有一次成型 写的话太复杂了 效率太低
在能修改数据库的基础上 给该表加2字段 StartIpInt和EndIpInt
然后把ip转换成数字存储进行
比如1.2.3.4这个ip可以转换成1*256*256*256+2*256*256+3*256+4这个值
跑一次就把数据库的记录全部更新了
然后你要查询的ip只需要转换成值对该2个字段进行搜索
比如183.12.241.174=183*256*256*256+12*256*256+241*256+174
------解决方案--------------------同意楼上,转换成int,进行匹配
第一位做255*255*255往后依次类推
------解决方案--------------------当初你就可以直接存bigint
System.Net.IPAddress ip;
if(System.Net.IPAddress.TryParse(str, out ip)) 存ip.Address
------解决方案--------------------还是不要自己做数据库了
我是用有道的
当然还有其他选择~
http://www.hujuntao.com/api/the-ip-address-api-and-call-the-interface-method.html
------解决方案--------------------
where "+ intIP +" between ... and ..."
还是你自己写吧。
------解决方案--------------------我不记得SQL Server时候会自动对between使用索引了。如果不能,那么你就应该写为
where intStartIP<=" + intIP +" and intEndIP>="+ intIP
这一类的。并且确保先对 intStartIP 和 intEndIP 字段创建索引。
不要把原始的 StartIP 和 EndIP 字段给改了。保留这两个可读性强的字段,非常必要的。