2010-12-06 28 views

Répondre

2

Tout de nvarchar(max), varchar(max) et varbinary(max). Nvarchar (max) et varchar (max) sont des informations textuelles (avec nvarchar ayant un support Unicode). Varbinary (max) est pour les données binaires (images, fichiers, etc.).

Dans tous les cas, il est démontré que l'utilisation MAXindicates that the maximum storage size is 2^31-1 bytes.

+0

nvarchar (max), varchar (max) autorise le caractère 4000 (4 Ko). varbinary (max). autoriser 8 kb. J'ai besoin de plus de 8kb ou 8000 caractères. – maycil

+3

@maycil - vous devez relire la documentation. À partir de ['varchar'] (http://msdn.microsoft.com/en-us/library/ms176089.aspx) documents: 'max indique que la taille de stockage maximale est de 2^31-1 octets.' et' Utilise varchar (max) lorsque les tailles des entrées de données de colonne varient considérablement, et la taille peut dépasser 8 000 octets. » – Oded

+0

@maycil: vous avez tort - varchar (max) autorise ** 2 GByte ** d'informations textuelles, varbinary (max) autorise ** 2 GByte ** d'informations binaires –

2

Si ce sont des données de texte alors soit varchar(max) ou nvarchar(max) (prend en charge unicode). varchar (max) a une taille de stockage maximale de 2^31-1 octets (Ref.)

S'il s'agit de données binaires, utilisez varbinary(max).

+0

Je suppose que ce que OP voulait dire, puisque varchar (max) ne peut pas stocker plus de 8kb de données dans une ligne sql, si OP a des données qui sont plus de 8kb, varchar (max) aiderait-il? Comment serait-il stocker si c'est plus de 8kb? –

+3

varchar (max) peut stocker considérablement plus de 8K .... –

0

Vous utilisez soit nvarchar(max), varchar(max) ou varbinary(max)

Si vous insérez des données supérieures à la ligne 8KB s'y limiter, les données sont transférées hors ligne vers une autre page dans une unité d'allocation de ROW_OVERFLOW_DATA.

Le MSDN article suivant explique ce processus plus en détail.

Je crois que le maximum pour varchar (max) est 2GB.

+0

Ou VARBINAIRE (MAX) pour les données binaires, non-textuelles .... –

+0

@marc_s - oops! raté ça. Je l'ai ajouté à ma réponse. – codingbadger

0

Ne soyez pas dérouté par le bit "varchar".

Cela signifie, fondamentalement, vous pouvez utiliser la plupart des fonctions sur varchar(max) comme vous le feriez sur varchar (50) or varchar (1000) or varchar (8000) `.

  • Le (max) DataTypes support 2^32-1 octets
  • Les types non-max en charge jusqu'à 8000 octets

vous pouvez avoir varchar(50) ou varchar(1000) jusqu'à varchar(8000) mais pour stocker des chaînes plus longues vous utiliseriez varchar(max).

Le bit "max" ou "50"/"1000"/"8000" détermine simplement le stockage interne + la longueur maximale de la chaîne.

Il existe bien sûr quelques différences mineures, telles que l'indexation.