mysql 使用使用inet_aton和和inet_ntoa处理处理ip地址数据的实例地址数据的实例
下面小编就为大家带来一篇mysql 使用inet_aton和inet_ntoa处理ip地址数据的实例。小编觉得挺不错的,现在就
分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文将介绍如何在数据库中使用合适格式保存ip地址数据,并能方便的对ip地址进行比较的方法。
1、保存、保存ip地址到数据库地址到数据库
数据库中保存ip地址,字段一般会定义为:
`ip` char(15) NOT NULL,
因为ip地址(255.255.255.255)的最大长度是15,使用15位char已足够。
创建表user
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`ip` char(15) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
插入几条数据插入几条数据
INSERT INTO `user` (`id`, `name`, `ip`) VALUES
(2, 'Abby', '192.168.1.1'),
(3, 'Daisy', '172.16.11.66'),
(4, 'Christine', '220.117.131.12');
2、、mysql inet_aton 与与 inet_ntoa 方法方法
mysql提供了两个方法来处理ip地址
inet_aton 把ip转为无符号整型(4-8位)
inet_ntoa 把整型的ip转为电地址
插入数据前,先用inet_aton把ip地址转为整型,可以节省空间,因为char(15) 占16字节。
显示数据时,使用inet_ntoa把整型的ip地址转为电地址显示即可。
例子:例子:
CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
`ip` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
插入几条数据插入几条数据
INSERT INTO `user` (`id`, `name`, `ip`) VALUES
(2, 'Abby', inet_aton('192.168.1.1')),
(3, 'Daisy', inet_aton('172.16.11.66')),
(4, 'Christine', inet_aton('220.117.131.12'));
mysql> select * from `user`;
+----+-----------+------------+
| id | name | ip |
+----+-----------+------------+
| 2 | Abby | 3232235777 |
| 3 | Daisy | 2886732610 |
| 4 | Christine | 3698688780 |
+----+-----------+------------+
查询显示为电地址查询显示为电地址
mysql> select id,name,inet_ntoa(ip) as ip from `user`;
+----+-----------+----------------+
评论0
最新资源