IP アドレスを格納するのに最適なカラム型

MySQL4.x で IP アドレスを保存するには、int にして、関数で変換して利用してやると文字列よりも加工がしやすい。

mysql> SELECT INET_ATON(“209.207.224.40”);
       -> 3520061480

mysql> SELECT INET_NTOA(3520061480);
       -> “209.207.224.40”

ネットマスクは例えば次のようにチェックできる。

mysql> select INET_ATON(“192.168.0.255”) & INET_ATON(“192.168.0.0”) = INET_ATON(“192.168.0.0”);
       -> 1
 
mysql> select INET_ATON(“192.167.255.1”) & INET_ATON(“192.168.0.0”) = INET_ATON(“192.168.0.0”);
       -> 0