微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IP地址数据类型

如何解决IP地址数据类型

sql Server中表示IP地址的理想数据类型是什么?使用varchar(n)更好吗?

这是我数据库的一部分:

CREATE TABLE logUser 
(
    userId int primary key,userFirstName varchar(20),userLastName varchar(20),IPAddress real,city varchar(15),salary real 
)

CREATE TABLE Alert 
(
    AlertId varchar(10) primary key,alType varchar(20),aluserId int references logUser(userId)
)

CREATE TABLE GeoAnalytics
(
    AId int,--Analytics ID     
    AlertId varchar(10) references Alert(AlertId),Country varchar (20),City varchar(30),CONSTRAINT pk PRIMARY KEY (AId,AlertId)
)

解决方法

varchar(15),如果您只想存储IP并且没有太多数据。

IPv4地址实际上是一个32位整数,可以将其转换为数字形式或从其数字形式转换为显示形式。 (IPv6也是如此:它是一个128位整数)。

如果将其存储为binary(4),它将占用更少的空间(4个字节而不是15个字节);您可以在查询中进行IP范围检查;而且由于DB不必进行字符串比较,因此在select语句中用作条件会更快。

缺点是您需要将IP转换为整数形式才能与DB一起使用;并且您必须先将其转换为它的显示形式,然后才能显示给用户。如果您稍作搜索,我相信您会找到所使用的任何语言的预写函数,但这是一个额外的步骤。

根据您的情况,我认为这两种方法都是理想的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。