Mysql怎樣存儲IP地址
概述
在Mysql中并沒有提供針對IP地址存儲的數(shù)據(jù)格式只搁,在開發(fā)中我們可以選擇使用char、varchar俭尖、int來存儲氢惋,根據(jù)mysql字段類型選擇的規(guī)則:字段類型定義使用最合適(最小)稽犁、最簡單的數(shù)據(jù)類型焰望,優(yōu)先選擇使用int類型來存儲,其在邏輯運(yùn)算上也要比char已亥、varchar更快
int類型存儲IP地址
在Mysql中提供了兩個函數(shù)熊赖,用來把IP地址與數(shù)字類型的相互轉(zhuǎn)化
-
inet_aton()
:把IP地址轉(zhuǎn)化為數(shù)字這種算法其實借用了國際上對各國IP地址的區(qū)分中使用的ip number。
a.b.c.d 的ip number是:
a * 256的3次方 + b * 256的2次方 + c * 256的1次方 + d * 256的0次方陷猫。mysql> select inet_aton('255.255.255.255'); +------------------------------+ | inet_aton('255.255.255.255') | +------------------------------+ | 4294967295 | +------------------------------+ 1 row in set (0.00 sec)
-
inet_ntoa()
:把數(shù)字轉(zhuǎn)化成IP地址mysql> select inet_ntoa(4294967295); +-----------------------+ | inet_ntoa(4294967295) | +-----------------------+ | 255.255.255.255 | +-----------------------+ 1 row in set (0.00 sec)