代码之家  ›  专栏  ›  技术社区  ›  Jeff Meatball Yang

SQL Server 2008的4字节无符号整数?

  •  1
  • Jeff Meatball Yang  · 技术社区  · 16 年前

    我知道有很多关于这个的问题,但我还没有找到一个明确的答案“是的,这是如何…”

    所以这里又是:在sql server中将无符号整数值(32位值或32位位图)存储到4字节字段中的可能方法是什么?

    以下是我看到的一些想法:

    1)对所有值使用-1*2^31偏移

    • 缺点:需要在读/写/聚合之前对值执行数学运算。

    2)使用4个tinyint字段

    • 缺点:需要连接值才能执行任何操作

    3)使用二进制(4)

    • 缺点:实际使用4+2字节的空间 (编辑:varbinary(4)使用4+2,binary(4)只使用4)
    • 需要在sqlbinary中工作或转换为其他类型
    1 回复  |  直到 16 年前
        1
  •  2
  •   Thomas    16 年前

    imo,您有正确的答案可以将2^32个正值存储在4个字节中:标准的 int 你做数学题或者 binary(4) 与您所说的相反,它只占用4字节的空间。(仅) varbinary 将产生额外的2字节存储空间)。一系列 tinyint smallint 在国际海事组织看来,专栏是不合理的麻烦。

    当然还有另一种存储2^32正值的解决方案,但它需要8个字节:带有check约束的bigint。考虑到当今存储和内存是多么便宜,imo,这是一个最简单和最便宜的解决方案,考虑到您必须与其他解决方案一起跳转的编程环,但是很明显,您有理由希望在每行上节省额外的4字节。

    推荐文章