2011-03-10 136 views
3
declare @string nvarchar(MAX) = '' 

@string中有多少个字符?nvarchar中有多少个字符(MAX)

+0

可能的复制【什么是对NVARCHAR(MAX)?最大字符](https://stackoverflow.com/questions/11131958/what-is -THE-最大字符换的,nvarcharm ax) – 2018-02-22 12:17:29

+0

@mod:更好/更老的重复:https://stackoverflow.com/questions/4270049/what-is-the-maximum-number-of-characters-that-nvarcharmax-will-hold – 2018-02-22 12:18:36

回答

6

为nvarchar(MAX)将持有高达2GB的这是约十亿个字符,因为它是unicode

在你的情况下,它是0

也看看这个,数据长度计数的存储, LEN计数字符,VARCHAR这将是相同的

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

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

它发生了什么我声明'varchar(MAX)'而不是'nvarchar(MAX)'? – cMinor 2011-03-10 02:27:03

+0

在这种情况下,您最多可以使用20亿个字符 – SQLMenace 2011-03-10 02:27:32

+1

@darkcminor:对于NVARCHAR(MAX),10亿个字符大约是Tolstoj的“War and Peace”的200倍 - 应该足以满足大多数**情况。 .. – 2011-03-10 07:20:21

3

您拥有大约20亿字节的Unicode字符。从the MSDN documentation for char and varchar

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