Как правильнее организовать хранение IP-адреса в базе данных? Первое, что приходит в голову — просто сохранять как текст. Слышал, что вместо этого можно конвертировать адрес в целое число. Как лучше сделать?
Как хранить IP-адрес в базе данных?
2
Спросил
Лучший ответ:
1
Если вам нужно хранить ИП в MSSQL в поле int, то сделать это можно по формуле (где ип - A.B.C.D):
IP = A x (256*256*256) + B x (256*256) + C x 256 + D
В mysql для этого есть встроенные функции:
mysql> SELECT INET_ATON('192.168.0.10') AS ipn;
+------------+
| ipn |
+------------+
| 3232235530 |
+------------+
mysql> SELECT INET_NTOA(3232235530) AS ipa;
+--------------+
| ipa |
+--------------+
| 192.168.0.10 |
+--------------+
Одно поле INT - это, конечно, удобно. Но если потребуется вести сложный поиск по таблице, то имхо лучше будет 4 поля tinyint + одно вычисляемое поле
Кстати, функции
INET_NTOA
,INET_ATON
в 2008-м появились? У меня в 2005-м такого нетINETNTOA, INETATON есть в mysql. Не путайте с MS SQL