NVARCHAR(MAX)的最大字符是多少?

Jer*_*sco 189 sql-server sql-server-2005 sql-server-2008

NVARCHAR(MAX)在SQL Server 2008中声明了一个类型的列,它的确切最大字符是什么,其中MAX是长度?

mar*_*c_s 369

类型列的最大大小为NVARCHAR(MAX)2 GB存储.

由于NVARCHAR每个字符使用2个字节,大约是 10亿个字符.

Leo Tolstoj的" 战争与和平"是一本1'440页的书,包含大约600,000个单词 - 因此可能有600万个字符 - 很好地被四舍五入.因此,你可以在每一栏中贴出约166份完整的战争与和平NVARCHAR(MAX).

这有足够的空间满足您的需求吗?:-)

  • 只是一个挑选.NVARCHAR对大多数字符使用2个字节.对于超过U + 00FFFF的unicode caracters.它将使用四个字节. (13认同)
  • 这是超越斯巴达的疯狂. (4认同)
  • 吹毛求疵:“存储大小是两倍 n 字节 + 2 字节。” ([来源](https://learn.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15#arguments)) (3认同)
  • “一个常见的误解是认为 NCHAR(n) 和 NVARCHAR(n) 中的 n 定义了字符数。但在 NCHAR(n) 和 NVARCHAR(n) 中,n 定义了 **字节对* 中的字符串长度*”([来源])(https://learn.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql?view=sql-server-ver15#评论) (3认同)

Mad*_*han 54

默认情况下,nvarchar(MAX)值的存储与nvarchar(4000)值完全相同,除非实际长度超过4000个字符; 在这种情况下,行内数据由指向存储数据的一个或多个单独页面的指针代替.

如果您预计数据可能超过4000个字符,那么nvarchar(MAX)绝对是推荐的选择.

资料来源:https://social.msdn.microsoft.com/Forums/en-US/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/

  • 如果由于存在索引问题,您的数据永远不会超过4000个字符,也不会推荐它. (11认同)

Fra*_*oto 9

我认为实际上nvarchar(MAX)可以存储大约 1070000000 个字符。

  • 我不确定,但我认为,如果 nvarchar 使用比 varchar 两倍的空间来存储 char ,并且 nvarchar(MAX) 可以用来存储字符的最大内存数是 2^31-1 => 2147483647,那么2147483647/2 是 1073741824。准确地说,这不是一个确切的数字。 (6认同)

小智 7

来自MSDN文档

nvarchar [(n | max)]

可变长度的Unicode字符串数据.n定义字符串长度,可以是1到4,000之间的值.max表示最大存储大小为2 ^ 31-1个字节(2 GB).存储大小(以字节为单位)是输入数据的实际长度的两倍+ 2个字节