1

Microsoft 关于 varchar(max) 数据类型的文档:

“变长,非Unicode字符串数据……max表示最大存储大小为2^31-1字节(2GB)。存储大小为输入数据的实际长度+2字节”

http://technet.microsoft.com/en-us/library/ms176089.aspx

我认为 2^31 字节 = 2 GB,而不是 2^31-1 字节 = 2 GB。在这一点上我错了吗?

其中两个字节是为列开销保留的,所以问题变成了:

数据类型将存储多少个字符?
a) 2^31-3 = 2,147,483,645 字节 = 2,147,483,645 字符
b) 2^31-2 = 2,147,483,646 字节 = 2,147,483,646 字符

4

1 回答 1

2

数字 2^31-1 是十六进制的 0x7fffffff。它是二进制互补机器(如 x86 和几乎所有其他机器)上可能的最大正 32 位数字。

文档告诉您这是最大存储大小,它必须包含数据长度加上 2 个字节。这意味着最大数据大小为 2^31-1-2,即 2,147,483,645 (0x7FFFFFFD)。

于 2013-08-24T01:46:50.777 回答