代码之家  ›  专栏  ›  技术社区  ›  Nathan Fisher

mysql中的binary(16)和varbinary(16)有区别吗?

  •  3
  • Nathan Fisher  · 技术社区  · 15 年前

    当字符串表示guid时,nhibernate似乎与varbinary(16)有问题。我本以为varbinary(16)和binary(16)等同于相同的东西。

    3 回复  |  直到 15 年前
        1
  •  4
  •   richardtallent    15 年前

    二进制(16)是固定长度的。它总是为每行使用16个字节的存储空间,用0x00或0x20填充任何额外的字节(取决于MySQL的版本),并在select上剥离它们。varbinary使用一个可变的空间量——存储该行上的数据所需的任何空间。

    如果您的数据总是正好16个字节,则没有区别。实际上,对于一个这么小的列来说,可能没有什么不同。

        2
  •  0
  •   Sampson    15 年前

    MySQL参考手册: The BINARY and VARBINARY Types

    当存储二进制值时,用pad值右填充到指定的长度…对于varbinary,插入时不填充,选择时不剥离字节。

        3
  •  0
  •   Cinder6    15 年前

    为了扩展这一点,var_类型和 类型 (何处) 类型 例如char、int、binary等),即非var“version”将被填充到指定的完整长度(如有必要)。var-不会被填充,这使得它适合存储文本注释等。