mysql中的ip存储与查询

MySQL 提供了两个方法来处理 ip 地址

  • inet_aton 把 ip 转为无符号整型 (4-8 位)
  • inet_ntoa 把整型的 ip 转为地址
  • 插入数据前,先用 inet_aton 把 ip 地址转为整型,可以节省空间,显示数据时,使用 inet_ntoa 把整型的 ip 地址转为地址显示即可
  • select 
    INET_ATON('192.168.0.1');
    
    select 
    INET_NTOA('3232235521');

select 
INET_ATON('192.168.0.1')

select 
INET_NTOA('3232235521')

 

建表语句:

CREATE TABLE `test_ip` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `ipstr` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'str类型的ip',
  `ip_aton` bigint DEFAULT NULL COMMENT '转换为无符号之后的ip数据',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

插入语句sql:


INSERT INTO test_ip (ipstr,ip_aton) VALUES ('192.168.0.1',INET_ATON('192.168.0.1'));

 插入完成后的结果如图:

 

上面的查询sql:

SELECT id,ipstr,ip_aton,INET_NTOA(ip_aton) from test_ip

posted @ 2022-12-07 18:36  diligently  阅读(45)  评论(0)    收藏  举报