nvarchar(MAX) 中可用的字符数是多少?

4
declare @string nvarchar(MAX) = ''

@string中有多少个字符可用?


可能是[什么是NVARCHAR(MAX)的最大字符数?]的重复问题(https://dev59.com/fmgu5IYBdhLWcg3wt5Lt)。 - underscore_d
@mod:更好/更旧的重复问题:https://dev59.com/_m855IYBdhLWcg3wj1IS - underscore_d
2个回答

8

nvarchar(MAX)最多可容纳2GB的数据,因为它是Unicode编码,大约相当于10亿个字符。

在您的情况下,它是0。

此外,请注意,datalength计算存储空间,len计算字符数,对于varchar,它们将相同。

declare @string nvarchar(MAX) = ''
select datalength(@string), LEN(@string)
GO

declare @string nvarchar(MAX) = '1'
select datalength(@string), LEN(@string)

如果我声明 varchar(MAX) 而不是 nvarchar(MAX) 会发生什么? - edgarmtze
在这种情况下,您可以达到20亿个字符。 - SQLMenace
1
@darkcminor:NVARCHAR(MAX)的10亿个字符大约是托尔斯泰的《战争与和平》200倍的容量 - 对于大多数情况应该足够了... - marc_s

3
你有约20亿个字节的Unicode字符可供使用。来自char和varchar的MSDN文档
可变长度的非Unicode字符数据。n可以是1到8000之间的值。max表示最大存储大小为2^31-1字节。存储大小是实际输入数据的长度+2个字节。输入的数据长度可以为0个字符。varchar的ISO同义词是char varying或character varying。

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