TABLE A
ID IPADDRESS     COL2 ....
1  10.0.0.22
2  192.168.0.22
3  222.222.222.22TABLE B
ID STARTE           ENDE         TYPE
1  10.0.0.1         10.1.0.1      p
2  222.222.222.1   222.222.223.1  o
1  192.168.0.1     192.168.10.1   p表A如何根据表B中规定的地址(用STARTE和ENDE表示某一段IP地址)类型(TYPE)确定自己的IPADDRESS是属于哪个类型,并在此基础上实现其他功能呢?表B可能会定义同一种类型的多个地址段,同时也可能出现多种类型(超过两种TYPE的情况).
就是
IF(A.IPADDRESS属于P类型){do something here}
if(A.IPADDRESS属于O类型)){do something here}
if(A.IPADDRESS属于Other类型)){do something here}谢谢支持及帮助!

解决方案 »

  1.   

    IP地址如果要频繁的做比较的话,建议保存成INT类型.这样你就直接用大小等于号来操作IP地址了.
      

  2.   

    如果写成INT类型的话.这个SP就非常的好写.就是几个简单的IF 语句.if then
    ...
    elseif then
    ...
    else 
    ...
    end if;
      

  3.   

    1.我存储的时候用的是varchar类型,我想比较的时候通过下面两个函数:
      inet_aton:将ip地址转换成数字型   inet_ntoa:将数字型转换成ip地址
      这样做是不是影响效率呢? 如果存储成INT型,那插入和输出的时候是不是也要用到上面两个函数实现呢?2.我知道用IF语句,我就想SQL查询不象是一般程序语言,SQL查询出来是一组数据,如何去写判断条件呢,比如:
      判断一个A.ADDRESS落在哪个IP地址段(STARTE--ENDE),然后在获取相应的类型.或者先选择所有P类型的记录,然后逐条与A.ADDRESS做比较
      就是上面所说的不知道该怎么描述.我设想是用两个游标,一个指向A表中的记录,一个指向B表中的记录,然后做比较?但游标的执行效率好象不高哦!
      有没有好的办法呢?请达人指教!