varchar(max)中最多可以有多少个字符?

62
当数据类型为VARCHAR(MAX)时,SQL Server 2008数据库字段可以容纳多少个字符?

请查看此链接:https://dev59.com/I14b5IYBdhLWcg3wiSTV - vicky
4个回答

69

针对需要快速得到答案的读者:

2^31-1 = 2,147,483,647个字符,大约为21.47亿


68

来自 http://msdn.microsoft.com/en-us/library/ms176089.aspx

varchar [ ( n | max ) ] 可变长度非 Unicode 字符数据。n 的取值范围为 1 到 8,000。max 表示最大存储大小为 2^31-1 字节。存储大小为输入数据的实际长度 + 2 字节。输入的数据可以是长度为 0 的字符。ISO 的同义词为 char varying 或 character varying。

1 个字符 = 1 个字节。不要忘记加上 2 个字节的终止符。因此,最多可容纳 2^31-3 个字符。


12
从技术上讲,一个字节仅对于某些字符编码才等同于一个字符。 - Amber
1
啊,没错。比如说DBCS字符串会给你带来更少的字符数。所以,要小心处理。 - i_am_jorf
@Dav,是的,那也是我考虑过的一个因素。但是由于可用字节数量有限,在这种情况下这已经满足我的需求了。 - Russell
对于我们这些不是计算器的人来说,这大约是 2.1 x 10^9 中的一半。 - 千里ちゃん
不想打击你的积极性,但是... 2^31 字节(2 GB)... 如果有足够的内存来处理它... 每次使用并填充这么多数据时... 也就是说,还存在内存问题... - Erk

8
请参阅MSDN参考表格以获取最大数字/大小

每个varchar(max),varbinary(max),xml,text或image列的字节数:2 ^ 31-1

该列有两个字节的开销,因此实际数据的最大长度为2 ^ 31-3字节。假设您使用单字节字符编码,则总共有2 ^ 31-3个字符。(如果您使用的字符编码每个字符使用多个字节,请除以每个字符的总字节数。如果您使用的是可变长度的字符编码,则所有押注都无效。)


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接