SQL Server varchar(max)中的字符数?

时间:2013-08-24 00:12:41

标签: sql sql-server database database-design data-structures

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

“可变长度,非Unicode字符串数据... max表示最大存储大小 2 ^ 31-1字节(2 GB)。存储大小是实际长度输入的数据+ 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字符

1 个答案:

答案 0 :(得分:2)

数字2 ^ 31-1是十六进制的0x7fffffff。这是两个赞美机器上最大的正32位数(如x86和其他所有东西)。

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