日期:2014-05-16  浏览次数:20950 次

从数据库中获取两个字段中的值
我有个IP数据库,有三个字段,分别是ip1(起始IP)、ip2(结尾IP)、dizhi(某个IP在IP1和IP2之间就显示这个值)

我想知道的是怎么判断这个IP值,我尝试用<=和>=判断了,但是不行的,也就是说如果数据库中有36.40.76.141和36.407.6.141,查询的IP刚好是36.407.6.142,又刚好36.40.76.141在数据库列表中靠前,所以程序就会把36.40.76.141到某个段中的地址显示出来,按理是应该显示36.407.6.141到某个字段中的地址,所以应该不能直接写<=和>=,应该是在判断之前程序把查询的这个IP给处理了再和数据库中的IP段做对比,但是我技术有限,所以不知道怎么写,希望各位大侠帮帮忙。

数据库读取现在是这样写的


<%
ip=Request.ServerVariables("REMOTE_ADDR")
Set rs=Server.CreateObject("adodb.recordset")
sql="select * from ipk where ip1<='"&ip&"' and ip2>='"&ip&"'"
rs.open sql,conn,1,1
%>
<%=rs("dizhi")%>
<%
rs.close
set rs=nothing
%>


这样写经常判断不正确的,所以希望各位大侠帮忙解决下问题。
最好是给段完整的调取代码,这样小生才能正常使用。

------解决方案--------------------
ip转成数字吧。好处理很多。
------解决方案--------------------
function iptonumber(ip)
    arr=split(ip,".")
    iptonumber=256*256*256*arr(0) + 256*256*arr(1) + 256*arr(2) +arr(3)'转换为数字
end if


用上面的函数将数据库中的ip地址转为数字,更新对应字段,然后通过access软件将将字段的类型改为数字,字段大小为长整形,保存就行了。

查询的时候同样用那个函数转为数字,在between查询

说到这里你还不懂楼主可以改行了~