对于IPv4地址。人们经常使用VARCHAR(15)列去存储IP地址。然而,它们实际上是32位无符号整数,不是字符串。用小数点将地址分成4段的表示方法只为了让人们阅读容易。所以应该用无符号整数存储IP地址。MySQL提供了 INET_ATON()
和 INET_NTOA()
函数在这两种表示方法之间转换。MySQL5.6版本之后,也有了解释IPv6地址的方法,就是INET6_ATON()
和 INET6_NTOA()
函数
INET_ATON(IP)函数 ——把IP转为无符号整型(4-8位)
假如需要在表中查出IP在192.168.1.13到192.168.1.23之间的IP地址
SELECT * FROM ip_table WHERE INET_ATON(ip) > INET_ATON('192.168.1.13') AND INET_ATON(ip) < INET_ATON('192.168.1.23');
INET_NOTA(IP)函数 ——把整型的IP转为字符串式的地址
插入数据前,先用INET_ATON()
把ip地址转为整型,显示数据时,使用 INET_NTOA()
把整型的IP地址转为字符串格式的地址显示。
新增IP地址数据
INSERT INTO `ip_address`(`id`,`ip`) VALUES
(1,inet_aton('192.168.1.1')),
(2,inet_aton('192.168.1.2')),
(3,inet_aton('192.168.1.3')),
(4,inet_aton('192.168.1.4')),
(5,inet_aton('192.168.1.5'));
查询IP地址
SELECT id,INET_NTOA(ip) AS ip FROM ip_address ;
网友评论