たとえば以下のようなテーブルがあったとします。A,B,C社はそれぞれ、ip_fromからip_toまでのIPアドレス帯域を持っているという意味です。
| company_table | ||
|---|---|---|
| company | ip_from | ip_to |
| A社 | 192.168.1.1 | 192.168.1.254 |
| B社 | 192.168.2.1 | 192.168.2.254 |
| C社 | 192.168.3.1 | 192.168.3.254 |
select * from company_table
where INET_ATON(ip_from) <= INET_ATON("192.168.2.123") and INET_ATON(ip_to) >= INET_ATON(“192.168.2.123″);
上記のSQLを実行すると、B社が結果で返ってきます。
INET_ATON(たぶんAddressTONumberの略)はネットワークアドレスを10進数に変換してくれる関数です。数値に変換することで、SQLでのネットワークアドレスの扱いがぐっと楽になります。ちなみに逆バージョンのINET_NTOAというのもあります。
http://dev.mysql.com/doc/refman/4.1/ja/miscellaneous-functions.html




