17 de enero de 2010

Almacenar direcciones IP en MySQL y PostgreSQL

En PostgreSQL está el tipo de variable "net", especial para direcciones ip en formato octal.
Pero en MySQL no he encontrado este tipo de variable.

De modo que en MySQL el campo para almacenar una dirección ip pueden ser una variables del tipo: varchar(15)

ip=xxx.xxx.xxx.xxx = max. 15 caracteres.

En MySQL la transformación de octal a decimal parece sencilla, pudiendo almacenar y trabajar con la direcciones ip de forma decimal:

The best way to store an IP addresses in a RDBMS is by converting it into an INT.
MySQL is especially nice because it will do the conversion between INT and
dotted quad for you.
See the INET_ATON and INET_NTOA functions.
You'll find queries like this all over in my code:
SELECT INET_NTOA(ip) from ips;
or
INSERT INTO ips SET ip=INET_ATON('1.1.1.1');

http://dev.mysql.com/doc/refman/5.1/en/char.html

Otro ejemplillo:

mysql> select INET_ATON('100.100.100.100');
+------------------------------+
| INET_ATON('100.100.100.100') |
+------------------------------+
| 1684300900 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select INET_NTOA(1684300900);
+-----------------------+
| INET_NTOA(1684300900) |
+-----------------------+
| 100.100.100.100 |
+-----------------------+
1 row in set (0.00 sec)


No hay comentarios:

Publicar un comentario