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


Answers:


412

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

由于NVARCHAR每个字符使用2个字节,因此大约为。10亿个字符。

列夫·托尔斯泰(Leo Tolstoj)的《战争与和平》War and Peace)是一本1,440页的书,其中包含约600,000个单词-因此可能是600万个字符-进行了四舍五入。因此,您可以将整本《战争与和平》一书的约166册粘贴到每一NVARCHAR(MAX)栏中。

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


17
只是一个选择。NVARCHAR对于大多数字符使用2个字节。对于U + 00FFFF以上的unicode角色。它将使用四个字节。
Eli Algranti

7
这是斯巴达式的疯狂。
MisterGeeky

1
PostgreSQL等同于NVCHAR(MAX)?
Pratik

63

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

如果您预期数据可能超过4000个字符,则绝对推荐使用nvarchar(MAX)。

来源:https : //social.msdn.microsoft.com/Forums/zh-CN/databasedesign/thread/d5e0c6e5-8e44-4ad5-9591-20dc0ac7a870/


12
如果您的数据永远不会超过4000个字符,则也不建议这样做,因为存在索引问题。
HLGEM 2012年

我相信这已经过时了。请参阅@marc_s的答案。
Fabio Milheiro

9

MSDN文档

nvarchar [(n | max)]

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


6

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


您能解释一下从何处获得该数字,以及“准确”是什么意思吗?(即您是说这不是一个硬性限制,但是使用更多字符可能会有问题?什么样的问题?为什么?)
Adi Inbar

3
我不确定,但是我认为,如果nvarchar使用比varchar两倍的空间来存储char,并且nvarchar(MAX)可以用来存储char的最大内存数是2 ^ 31-1 => 2147483647,那么2147483647/2是1073741824。准确地说,我的意思不是确切数字。
弗朗西斯科·哈维尔·拉里奥斯·索托2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.