在MySQL中,价钱和IP用什么类型存储最好?

在MySQL中,价钱和IP用什么类型存储最好?

今天,一同事跑来问我,数据库应该用什么来保存IP地址,平时看到的都是字符串。

答曰:有钱任性!要么就像马云粑粑说的,开发心里受委屈了!开个玩笑,咱谈正事!

其实,日常开发中,大多数新手保存IP地址时会创建一个VARCHAR类型的字段以字符串形式去保存的IP,而不是以无符号整型的方式去存放IP地址。这不仅浪费了存储空间,也降低了查询的效率。

实际上,我们只需要用UNSIGNED INT就可以保存IP地址了,不仅效率提升了,还可以支持范围查询,非常方便!

一、MySQL的inet_aton与inet_ntoa

inet_aton可以把字符串IP地址转为整型存储;

inet_ntoa则是把数据库里整型IP地址转为字符串IP;

二、Python中IP地址的转换

在MySQL中,价钱和IP用什么类型存储最好?

py的socket模块同样提供了inet_aton和inet_ntoa

例子:

在MySQL中,价钱和IP用什么类型存储最好?

注意:需要导入相关socket模块和struct模块

三、PHP中IP地址的转换

在MySQL中,价钱和IP用什么类型存储最好?

PHP中也有两个转换函数:

ip2long:将字符串类型IP地址转为整型IP地址

long2ip:将整型IP地址转为字符串类型IP地址

例子:

在MySQL中,价钱和IP用什么类型存储最好?

很简单,只是程序计算有时会出现负数,还需要使用u%格式化一下!

至于价钱,有人说用decimal类型,有人说bigint类型,到底用哪种,看完以上内容,大家说说看,用什么类型存储最好?


分享到:


相關文章: