代码之家  ›  专栏  ›  技术社区  ›  Henry

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

  •  10
  • Henry  · 技术社区  · 14 年前

    我应该用吗? binary(16) varbinary(16) ?

    我知道我可以用 getAddress() 在里面 java.net.InetAddress (Java)或 System.Net.IPAddress (C)获得A byte[] 两者的代表 IPv4 IPv6 binary(4) 变成一个 二进制(16) 字段在 SQL Server ,我需要担心填充或什么吗?

    2 回复  |  直到 10 年前
        1
  •  15
  •   Remus Rusanu    14 年前

    如果你存储了 binary(4) 在一个 binary(16) 当你读到这个列时,你会得到一个长度为16的填充值。如果要有动态长度,必须使用 varbinary(16) . 这种类型保留插入数据的长度,但在磁盘上增加额外的2个字节(实际长度)会造成损失。

        2
  •  7
  •   zwol    14 年前

    使用 v4-in-v6 address embedding 若要将您的IPv4地址转换为IPv6格式,则可以对它们进行完全相同的处理。