char et varchar (Transact-SQL)

Types de données chaîne de longueur fixe ou variable.

  • char [ ( n ) ]
    Données de type chaîne, non-Unicode, de longueur fixe. n définit la longueur de chaîne et doit compris entre 1 et 8 000. La taille de stockage est de n octets. Lorsque la page de codes du classement utilise des caractères sur deux octets, la taille de stockage reste de n octets. En fonction de la chaîne, la taille de stockage de n octets peut être inférieure à n. Le synonyme ISO de char est character.

  • varchar [ ( n | max ) ]
    Données de type chaîne non-Unicode d'une longueur variable. n définit la longueur de chaîne et doit être compris entre 1 et 8 000. max indique que la taille maximale de stockage est égale à 2^31-1 octets (2 Go). La taille de stockage, en octets, est la lvaleur des données entrées, plus deux octets. Les synonymes ISO de varchar sont charvarying ou character varying.

Notes

Lorsque la valeur de n n'est spécifiée ni dans une définition de données, ni dans une instruction de déclaration de variable, la longueur par défaut est 1. Lorsque la valeur de n n'est pas précisée dans les fonctions CAST et CONVERT, la longueur par défaut est 30.

Les objets qui utilisent char ou varchar reçoivent la collation par défaut de la base de données, sauf si une collection spécifique est affectée à l'aide de la clause COLLATE. Le classement contrôle la page de codes utilisée pour stocker les données de caractères.

Afin de prévenir les problèmes de conversion de caractères si vos sites prennent en charge plusieurs langues, envisagez d'utiliser les types de données Unicode nchar ou nvarchar. Si vous utilisez char ou varchar, nous vous recommandons de suivre les instructions suivantes :

  • Utilisez char lorsque les tailles des entrées de données de colonnes sont cohérentes.

  • Utilisez varchar lorsque les tailles des entrées de données de colonnes varient considérablement.

  • Utilisez varchar(max) lorsque les tailles des entrées de données de colonnes varient considérablement et que la taille peut dépasser 8000 octets.

Si SET ANSI_PADDING a la valeur OFF lors de l'exécution de CREATE TABLE ou ALTER TABLE, une colonne de type char définie comme NULL est considérée comme une colonne de type varchar.

Exemples

A. Affichage de la valeur par défaut de n utilisée dans une déclaration de variable.

L'exemple suivant montre que la valeur par défaut de n est 1 pour les types de données char et varchar lorsqu'ils sont utilisés dans une déclaration de variable.

DECLARE @myVariable AS varchar = 'abc', @myNextVariable AS char = 'abc';
--The following returns 1
SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable);
GO

B. Affichage de la valeur par défaut de n lorsque varchar est utilisé dans CAST et CONVERT.

L'exemple suivant montre que la valeur par défaut de n est 30 lorsque les types de données char ou varchar sont utilisés dans les fonctions CAST et CONVERT.

DECLARE @myVariable AS varchar(40) = 'This string is longer than thirty characters';
SELECT CAST(@myVariable AS varchar);
SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength';
SELECT CONVERT(char, @myVariable);
SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';