2011-03-10 173 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變量或字符變量。