kawama.jp

MySQLでIPアドレスを扱う(INET_ATONとINET_NTOA)

カテゴリ: MySQL — 2007年5月16日 10:17 — Comments (0)hatebu count

たとえば以下のようなテーブルがあったとします。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

「192.168.2.123」のIPアドレスが、どの会社の帯域に含まれるのかを検索したい場合、INET_ATONというMySQL関数が使えます。

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

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Copyright (C) 2002 - 2017 kawama All Rights Reserved. — Powered by WordPress