Utilisation des données char et varchar

Les types de données char et varchar stockent des données composées des éléments suivants :

  • des caractères majuscules et minuscules tels que a, b et C ;

  • des chiffres tels que 1, 2 ou 3 ;

  • des caractères spéciaux tels que les signes @ et &, ainsi que le point d'exclamation (!).

Les données char ou varchar peuvent être un caractère unique ou une chaîne comportant jusqu'à 8 000 caractères pour les données char et jusqu'à 2^31 caractères pour les données varchar. Les types de données varchar peuvent se présenter sous deux formes. Les données varchar peuvent avoir une longueur maximale de caractères (par exemple, varchar(6) indique que ce type de données peut stocker un maximum de six caractères) ou se présenter sous la forme varchar(max), qui augmente la longueur maximale de caractères pouvant être stockés par ce type de données jusqu'à 2^31. Pour plus d'informations sur varchar(max),, consultez Utilisation de types de données de valeur élevée.

Chaque valeur de données char et varchar a un classement. Les classements définissent des attributs tels que les modèles de bits utilisés pour représenter chaque caractère, les règles de comparaison et la sensibilité à la casse ou à l'accentuation. Chaque base de données présente un classement par défaut. Lorsqu'une colonne est définie ou qu'une constante est spécifiée, elle reçoit le classement par défaut de la base de données sauf si vous affectez un classement spécifique à l'aide de la clause COLLATE. Lorsque deux valeurs char ou varchar de classements différents sont combinées ou comparées, les règles de priorité des classements déterminent celui qui est utilisé pour l'opération.

Les constantes de caractère doivent être mises entre guillemets simples (') ou guillemets doubles ("). Il est recommandé de mettre une constante de caractère entre guillemets simples. Il n'est pas toujours autorisé de mettre une constante de caractère entre guillemets lorsque l'option QUOTED IDENTIFIER a la valeur ON.

L'exemple Transact-SQL suivant illustre l'attribution d'une variable de caractère à une valeur :

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

Lorsque vous utilisez des guillemets simples pour délimiter une constante de caractère contenant un guillemet simple imbriqué, utilisez deux guillemets simples à la place de celui qui est imbriqué. Par exemple :

SET @MyCharVar = 'O''Leary'

Si la donnée à stocker est plus longue que le nombre de caractères autorisé, elle est tronquée. Par exemple, si une colonne est définie comme char(10) et si la valeur « Il s'agit d'une chaîne de caractères très longue » est stockée dans la colonne, SQL Server tronque la chaîne de caractères à « Il s'agit ».

Le type de données char est un type de données à longueur fixe lorsque la clause NOT NULL est précisée. Si vous insérez dans une colonne char NOT NULL une valeur plus courte que la longueur de la colonne, des espaces sont rajoutés à la valeur pour ajuster celle-ci à la taille de la colonne. Par exemple, si une colonne est définie comme char(10) et si la donnée à stocker est « musique », SQL Server enregistre cette donnée comme « musique__ » où « _ » représente un espace.

Si ANSI_PADDING a la valeur OFF lors de la création d'une colonne char NULL, elle adopte le même comportement qu'une colonne char NOT NULL : les valeurs sont complétées à droite à concurrence de la taille de la colonne. Si ANSI_PADDING a la valeur OFF lors de la création d'une colonne char NULL, elle adopte le même comportement qu'une colonne varchar avec ANSI_PADDING ayant la valeur OFF : les espaces à droite sont tronqués.

Le type de données varchar est à longueur variable. Les valeurs plus courtes que la taille de la colonne ne sont pas complétées. Si l'option ANSI_PADDING a la valeur OFF au moment de la création de la colonne, tous les espaces à droite sont tronqués de la chaîne de caractères stockée dans la colonne. Si ANSI_PADDING a la valeur ON lors de la création de la colonne, les espaces à droite ne sont pas tronqués.

L'interprétation des modèles de bits stockés dans les octets d'une chaîne de caractères dépend de la page de codes MicrosoftSQL Server spécifiée durant l'installation. Un objet char ou varchar peut contenir n'importe quel caractère de la page de codes SQL Server. .

Les applications utilisant les pilotes ODBC de SQL Server (SQL Server version 6.5 ou antérieure) n'acceptent qu'un maximum de 255 octets de données de caractères. Si ces applications essaient d'extraire de SQL Server (version 7.0 ou ultérieure) des paramètres de caractères ou des colonnes d'ensembles de résultats contenant plus de 255 octets de données, les données de caractères sont tronquées à 255 octets.