但凡涉及到网络应用的数据库项目,几乎都涉及到了ip地址这个数据。一般童鞋都选择varchar(15)来保存ip地址信息,实际上对tcp/ip协议知晓的人都懂,ip地址无非就是一个32位的×××,而常用的书写形式只是便于人们方便阅读。
一般数据库保存数据的时候,但凡往简单方向发展。而整数型比字符串型内部实现相对简单。基于这一点,我们建议实际环境中,应该用32位无符号整数来保存这个ip地址。
实际上,mysql已经提供了直观的ip地址到整数数值的转换函数。INET_ATON()和INET_NTOA即可实现ip地址到整数之间的转换。看例子,如下:
mysql> SELECT INET_ATON('192.168.1.1');
+--------------------------+
| INET_ATON('192.168.1.1') |
+--------------------------+
| 3232235777 |
+--------------------------+
1 row in set (0.00 sec)
mysql> SELECT INET_NTOA(3232235777);
+-----------------------+
| INET_NTOA(3232235777) |
+-----------------------+
| 192.168.1.1 |
+-----------------------+
1 row in set (0.00 sec)