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

Hen*_*nry 12 t-sql sql-server ipv4 ipv6 inetaddress

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

我知道我可以使用 getAddress()java.net.InetAddress(JAVA)或System.Net.IPAddress(C#),以获得一个byte[]双方的表现IPv4IPv6,但如果我需要插入IPv4binary(4)进入binary(16)场中SQL Server,做我需要担心填充或什么?

Rem*_*anu 16

如果你binary(4)在一个binary(16)列中存储一个列,当你读到它时,你会得到一个长度为16的填充值.如果你想拥有动态长度,你必须使用a varbinary(16).此类型保留插入数据的长度,代价是在磁盘上添加额外的2个字节(实际长度).


zwo*_*wol 7

使用v4-in-v6地址嵌入将ipv4地址转换为ipv6格式; 然后你可以完全相同地对待它们.

  • 据推测,您希望此数据库列中的某些条目是实际的ipv6地址.v4-in-v6嵌入的要点是你的应用程序代码中的更多内容不必关心差异(它可以假装它只有v6地址). (3认同)