如何在SQL Server中的单列中存储IPv4或IPv6?

时间:2010-08-24 23:52:44

标签: sql-server tsql ipv6 ipv4 inetaddress

我应该使用binary(16)还是varbinary(16)

我知道我可以在getAddress()(Java)或java.net.InetAddress(C#)中使用System.Net.IPAddress来获得byte[]和{{IPv4的{​​{1}}表示1}},但如果我需要将IPv6IPv4插入binary(4)中的binary(16)字段,我是否需要担心填充或其他任何内容?

2 个答案:

答案 0 :(得分:15)

如果您在binary(4)列中存储了binary(16),那么当您阅读它时,会有一个长度为16的填充值。如果您想拥有动态长度,则必须使用{ {1}}。此类型保留插入数据的长度,代价是在磁盘上添加额外的2个字节(实际长度)。

答案 1 :(得分:7)

使用v4-in-v6 address embedding将您的ipv4地址转换为ipv6格式;然后你可以完全相同地对待它们。