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字符
答案 0 :(得分:2)
数字2 ^ 31-1是十六进制的0x7fffffff。这是两个赞美机器上最大的正32位数(如x86和其他所有东西)。
文档告诉您这是最大存储大小,必须保持数据长度加上2个字节。这意味着最大数据大小为2 ^ 31-1-2,或2,147,483,645(0x7FFFFFFD)。