MySql | INET_ATON和INET_NTOA

2022-04-29  本文已影响0人  七喜丶

对于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 ;
上一篇下一篇

猜你喜欢

热点阅读