nvarchar(MAX)最多可容纳多少个字符?


102

我是这个概念的新手nvarchar(MAX)。它可以容纳几个字符?

Answers:


155

最高 容量是2 GB的空间-因此,您正在寻找将要适合一个NVARCHAR(MAX)字段的超过10亿个2字节字符。

使用其他答案的更详细数字,您应该可以存储

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

在您的NVARCHAR(MAX)专栏中(不幸的是,最后一半字符被浪费了...)

更新: @MartinMulder指出:任何可变长度字符列也有2字节的开销来存储实际长度-所以我需要从之前指定的2 ^ 31 - 1长度中减去另外两个字节-因此,您可以存储少于1个Unicode字符我以前声称过。


1
哇...所以我想我真的不需要担心设置一个最大尺寸验证规则。我最好还是谨慎使用nvarchar(MAX)。
quakkels,2010年

20
@quakkels:除非您计划将托尔斯泰的《战争与和平》(约310万个字符)超过350倍-不,您不必担心容量:-)由于它是VARCHAR / NVARCHAR类型,它将总是只使用所需的空间-不用担心浪费或不必要的保留空间...
marc_s 2010年

2
真?这很酷。只是出于好奇,在什么情况下您不想使用nvarchar(MAX)?
quakkels,2010年

5
@quakkels:VARCHAR(MAX)如果您不需要亚洲,阿拉伯或西里尔语言的2字节支持,请使用。使用(N)VARCHAR(x),如果你知道一个字符串,决不会比X个字符(不使用NVARCHAR(MAX)一个名字-使用NVARCHAR(50)或任何对你有意义)
marc_s

1
我刚开始早上问同样的问题,您的两个答案都使我的脸上露出灿烂的笑容。+1。
Matthis Kohli

11

char和varchar(Transact-SQL)

varchar [(n | max)]

可变长度的非Unicode字符数据。n可以是1到8,000之间的值。max表示最大存储大小为2 ^ 31-1字节。存储大小是输入的数据的实际长度+ 2个字节。输入的数据长度可以为0个字符。varchar的ISO同义词是char变化或字符变化。


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.