Réponses:
Max. La capacité est de 2 gigaoctets d'espace - vous regardez donc un peu plus d'un milliard de caractères de 2 octets qui rentreront dans un NVARCHAR(MAX)
champ.
En utilisant les nombres plus détaillés de l'autre réponse, vous devriez être en mesure de stocker
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
dans votre NVARCHAR(MAX)
colonne (malheureusement, ce dernier demi-caractère est gaspillé ...)
Mise à jour: comme @MartinMulder l'a souligné: toute colonne de caractères de longueur variable a également une surcharge de 2 octets pour stocker la longueur réelle - j'ai donc dû soustraire deux octets de plus de la 2 ^ 31 - 1
longueur que j'avais précédemment stipulée - ainsi vous pouvez stocker 1 caractère Unicode de moins que J'avais réclamé avant.
VARCHAR(MAX)
, si vous n'avez pas besoin du support 2 octets pour les langues asiatiques, arabes ou cyrilliques. À utiliser (N)VARCHAR(x)
si vous savez qu'une chaîne ne sera jamais plus longue que x caractères (ne pas utiliser NVARCHAR(MAX)
pour un prénom - utilisez NVARCHAR(50)
ou tout ce qui a du sens pour vous)
À partir de char et varchar (Transact-SQL)
varchar [(n | max)]
Données de caractères non Unicode de longueur variable. n peut être une valeur comprise entre 1 et 8 000. max indique que la taille de stockage maximale est de 2 ^ 31-1 octets. La taille de stockage est la longueur réelle des données saisies + 2 octets. Les données saisies peuvent comporter 0 caractère. Les synonymes ISO de varchar varient en caractères ou en caractères.
2 ^ 31-1 octets. Donc, un peu moins de 2 ^ 31-1 caractères pour varchar (max) et la moitié de celui pour nvarchar (max).