2010-04-23 9 views
1

Lorsque vous utilisez Varchar (max), il s'agit de 8000 caractères pour une variable, et d'environ 2^32 pour une colonne, qu'est-ce que COLLATE et comment cela affecte-t-il?T-sql COLLATE et Varchar (max)

Merci

+1

VARCHAR (MAX) est ** toujours ** jusqu'à 2 Go de données ... où l'avez-vous lu était seulement 8000 caractères pour une variable? –

Répondre

3

Collation deterines comment sortes SQL Server et compare les données de chaîne (qui varchar variables et valeurs de la colonne sont).

Voir here

1

Lorsque vous déclarez une colonne ou une variable de varchar(max), il peut prendre jusqu'à 2 Go de données et 2^31-1 caractères. Si vous déclarez la colonne ou la variable comme nvarchar, il ne peut toujours prendre que 2 Go de données et (2^31-1)/2 caractères car chaque caractère occupe deux fois plus d'espace. Lorsque vous déclarez une colonne varchar ou une variable sans l'utilisation de la clause COLLATE, le classement de la base de données est utilisé. La clause `` COLLATE n'affecte pas la capacité de la colonne ou de la variable.

+0

Ne pas quitter précis http://msdn.microsoft.com/fr-fr/library/ms176089%28SQL.90%29.aspx – Tony

+0

Que prétendez-vous n'est pas précis? Les deux varchar et nvarchar ont le même espace max. (En ignorant les 2 octets supplémentaires). Puisque nvarchar occupe deux fois plus d'espace, vous obtenez la moitié moins de caractères (mais le même espace max total). – Thomas

+0

@Tony - Quel que soit le classement, vous ne disposez que de 2 Go de stockage. Combien de caractères qui se traduisent par peuvent changer sur le classement mais * en général * chaque caractère dans un varchar prend un octet par caractère et deux octets par caractère dans un nvarchar. – Thomas