略微加速

略速 - 互联网笔记

MySQL中INET_ATON()、INET_NTOA函数 (mysql IP转换)

2021-12-03 leiting (2556阅读)

标签 MySql

对于 IPv4 地址。人们经常使用VARCHAR(15)列去存储IP地址。然而,它们实际上是32位无符号整数,不是字符串。用小数点将地址分成4段的表示方法只是为了让人们阅读容易。所以应该用无符号整数存储IP地址。MySQL 提供了 INET_ATON() 和 INET_NTOA() 函数在这两种表示方法之间转换。MySQL 5.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_NTOA函数——把整型的ip转为字符串式的地址

插入数据前,先用inet_aton把ip地址转为整型,显示数据时,使用inet_ntoa把整型的ip地址转为字符串格式的地址显示即可。

INSERT INTO `ip_table`(`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_table ;

 

 


北京半月雨文化科技有限公司.版权所有 京ICP备12026184号-3