char et varchar (Transact-SQL)

Types de données caractères de longueur fixe ou variable.

  • char [ ( n ) ]
    Données de type caractère non-Unicode, d'une longueur fixe de n octets. n doit être compris entre 1 et 8000. La taille de stockage est égale à n octets. Le synonyme SQL-2003 de char est character.
  • varchar [ ( n | max ) ]
    Données de type caractère non-Unicode d'une longueur variable. n doit être compris entre 1 et 8000. max indique que la taille maximale de stockage est égale à 2^31-1 octets. La taille de stockage est la longueur réelle des données entrées + 2 octets. Les données saisies peuvent avoir une longueur de 0 caractère. Les synonymes SQL-2003 de varchar sont charvarying ou charactervarying.

Notes

Lorsque n n'est spécifié 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 n n'est pas précisé dans les fonctions CAST ou 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.

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 de caractères, la taille de stockage de n octets peut être inférieure à n caractères.

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
DECLARE @myNextVariable AS char
SET @myVariable = 'abc'
SET @myNextVariable = '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)
SET @myVariable = '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';

Voir aussi

Référence

nchar et nvarchar (Transact-SQL)
CAST et CONVERT (Transact-SQL)
COLLATE (Transact-SQL)
Types de données (Transact-SQL)
sp_dbcmptlevel (Transact-SQL)

Autres ressources

Sélection des classements
Conversion de types de données (moteur de base de données)
Utilisation des données char et varchar
Utilisation de données Unicode
Estimation de la taille d'une base de données

Aide et Informations

Assistance sur SQL Server 2005