Quel est le nombre maximum de caractères que nvarchar (MAX) contiendra?


102

Je suis nouveau dans le concept nvarchar(MAX). Combien de personnages contiendra-t-il?

Réponses:


155

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 - 1longueur que j'avais précédemment stipulée - ainsi vous pouvez stocker 1 caractère Unicode de moins que J'avais réclamé avant.


1
Wow ... donc je suppose que je n'ai pas vraiment besoin de m'inquiéter de définir une règle de validation de taille maximale alors. Je ferais mieux de faire attention quand j'utilise le nvarchar (MAX).
quakkels

20
@quakkels: à moins que vous ne prévoyiez de dépasser la guerre et la paix de Tolstoi (environ 3,1 millions de caractères) près de 350 fois - non, vous n'aurez pas à vous soucier de la capacité :-) Et comme c'est un type VARCHAR / NVARCHAR, il le sera n'utilisez toujours que l'espace nécessaire - ne vous inquiétez pas non plus de l'espace gaspillé ou réservé inutilement ...
marc_s

2
vraiment? C'est super. Par curiosité, dans quel cas ne voudriez-vous pas utiliser nvarchar (MAX)?
quakkels

5
@quakkels: utilisez 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)
marc_s

1
Je viens de commencer ma matinée en me posant la même question et vos deux réponses ont évoqué un grand sourire sur mon visage. +1.
Matthis Kohli

11

À 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.


4

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).

nchar et nvarchar

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.