MySQL十六进制二进制限制

时间:2016-04-19 19:33:13

标签: mysql binary hex

我有一个包含2列的表:' Id' (datatype = INT),' Representation' (数据类型=二进制)。 我想在'表示'中以二进制数字的形式存储十六进制值。柱。 什么是我可以存储在'表示'中的最大二进制数字数。专栏?

1 个答案:

答案 0 :(得分:1)

的MySQL

BINARY

MySql docs on the binary data type,提及:

  

VARBINARYCHAR的允许最大长度与VARCHARBINARY的允许最大长度相同,但VARBINARY和{的长度除外{1}}是以字节为单位的长度,而不是字符长度。

因此binarychar处于同一级别,varbinaryvarchar处于同一级别。

docs on the char data type,提及:

  

CHAR列的长度固定为您在创建表时声明的长度。长度可以是0到255之间的任何值。

因此,binary的最大大小可以通过以下方式实现:

CREATE TABLE mytable (
    id int,
    representation binary(255)
)

这对应于255个字节的数据,对应于510个十六进制数字或2040位。

VARBINARY

varbinary类型最多可以存储65,535个字节,必须从中减去其他列的大小。同样,这来自varchar上的文档:

  

VARCHAR列中的值是可变长度字符串。长度可以指定为0到65,535之间的值。 VARCHAR的有效最大长度取决于最大行大小(65,535字节,在所有列之间共享)和使用的字符集。

所以,让我们说在其他列中需要大约500字节的空间,然后你可以定义这个表:

CREATE TABLE mytable (
    id int, // takes 4 bytes
    representation binary(65000),
    // other fields come here, taking up less than 532 bytes
)

...你将有65,000个字节,即130,000个十六进制数字或520,000个字节。

SQL Server二进制文件

Transact-SQL docs on binary州:

  

二进制 [( n )]

     

长度为n个字节的固定长度二进制数据,其中n是1到8,000之间的值。存储大小为 n 字节。

这意味着使用此表定义:

CREATE TABLE mytable (
    id int,
    representation binary(8000)
)

...您可以存储8,000个字节,即16,000个十六进制数字或64,000位。

请注意varbinary的限制是相同的。以下建议在文档中给出:

  

当列数据条目的大小差别很大时,请使用varbinary