COLLATE (Transact-SQL)

Mis à jour : 5 décembre 2005

Clause pouvant être appliquée à la définition d'une base de données ou d'une colonne pour définir le classement, ou à une expression de chaîne de caractères pour appliquer un changement de classement.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

COLLATE { <collation_name> | database_default }
<collation_name> :: = 
     { Windows_collation_name } | { SQL_collation_name }

Arguments

  • collation_name
    Nom du classement à appliquer à l'expression, à la définition de la colonne ou à celle de la base de données. collation_name doit être un nom Windows_collation_name ou SQL_collation_name spécifié. collation_name doit être une valeur littérale. collation_name ne peut pas être représenté par une variable ou une expression.

    Windows_collation_name est le nom de classement pour un nom de classement Windows.

    SQL_collation_name est le nom de classement pour un nom de classement SQL.

  • database_default
    Oblige la clause COLLATE à hériter du classement de la base de données active.

Notes

La clause COLLATE peut être spécifiée à plusieurs niveaux, notamment lors de :

  1. la création ou modification d'une base de données ;
    Vous pouvez utiliser la clause COLLATE de l'instruction CREATE DATABASE ou ALTER DATABASE pour spécifier le classement par défaut de la base de données. Vous pouvez également spécifier un classement lorsque vous créez une base de données à l'aide de SQL Server Management Studio. Si vous ne spécifiez pas de classement, le classement par défaut de l'instance de SQL Server sera appliqué à la base de données.
  2. la création ou modification d'une colonne dans une table ;
    Vous pouvez spécifier des classements pour chaque colonne de chaîne de caractères à l'aide de la clause COLLATE de l'instruction CREATE TABLE ou ALTER TABLE. Vous pouvez également spécifier un classement lorsque vous créez une table à l'aide de SQL Server Management Studio. Si vous ne spécifiez pas de classement, le classement par défaut de la base de données sera appliqué à la colonne.
    Vous pouvez également utiliser l'option database_default dans la clause COLLATE pour spécifier qu'une colonne d'une table temporaire utilise le classement par défaut de la base de données utilisateur pour la connexion au lieu de la base de données tempdb.
  3. la conversion du classement d'une expression.
    Vous pouvez utiliser la clause COLLATE pour attribuer un classement particulier à une expression de caractère. Le classement par défaut de la base de données active est attribué aux constantes et aux variables de caractères. Le classement des définitions de la colonne est affecté aux références de colonnes. Pour plus d'informations sur le classement d'une expression, consultez Priorité de classement (Transact-SQL).

Le classement d'un identificateur dépend du niveau auquel il est défini. Le classement par défaut de l'instance est assigné aux identificateurs d'objets qui sont au niveau de l'instance, tels que les noms de connexion et de base de données. Le classement par défaut de la base de données est assigné aux identificateurs d'objets qui appartiennent à la base de données, tels que les noms des tables, des vues et des colonnes. Par exemple, deux tables dont les noms diffèrent uniquement au niveau de la casse peuvent être créées dans une base de données dont le classement respecte les majuscules/minuscules, mais pas dans une base de données dont le classement ne distingue pas les majuscules des minuscules. Pour plus d'informations, consultez Identificateurs.

Les variables, étiquettes GOTO, procédures stockées temporaires et tables temporaires peuvent être créées lorsque le contexte de la connexion est associé à une base de données, puis référencées lorsque le contexte est associé à une autre base de données. Les identificateurs des variables, étiquettes GOTO, procédures stockées temporaires et tables temporaires se trouvent dans le classement par défaut de l'instance.

La clause COLLATE peut être appliquée uniquement aux types de données char, varchar, text, nchar, nvarchar et ntext.

Les classements sont généralement identifiés par un nom de classement. Une exception existe toutefois au niveau de la procédure d'installation, dans laquelle vous ne spécifiez pas de nom pour les classements Windows, mais l'indicateur de classement, puis vous cochez des cases pour spécifier le tri binaire ou le tri du dictionnaire avec respect ou non des majuscules/minuscules ou des accents.

Vous pouvez exécuter la fonction système fn_helpcollations pour extraire la liste des noms de classement Windows et SQL autorisés :

SELECT *
FROM fn_helpcollations()

SQL Server ne peut prendre en charge que les pages de code qui sont prises en charge par le système d'exploitation sous-jacent. Lorsque vous effectuez une action qui dépend de classements, le classement SQL Server utilisé par l'objet référencé doit utiliser une page de codes prise en charge par le système d'exploitation exécuté sur l'ordinateur. Ces actions sont notamment les suivantes :

  • l'indication d'un classement par défaut d'une base de données lorsque vous créez ou modifiez cette dernière ;
  • l'indication d'un classement d'une colonne lorsque vous créez ou modifiez une table ;
  • Lorsque vous restaurez ou liez une base de données, le classement par défaut de cette dernière et le classement des colonnes ou paramètres char, varchar et text dans la base de données doit être pris en charge par le système d'exploitation.
    Les traductions de page de codes sont prises en charge pour les types de données char et varchar, mais pas pour text. La perte de données lors de la traduction d'une page de codes n'est pas mentionnée.

Si le classement spécifié ou utilisé par l'objet référencé utilise une page de codes non gérée par Windows, SQL Server génère une erreur.

Voir aussi

Référence

ALTER TABLE (Transact-SQL)
Priorité de classement (Transact-SQL)
Constantes (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DECLARE @local\_variable (Transact-SQL)
table (Transact-SQL)

Autres ressources

Utilisation des classements
Utilisation des données Unicode

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

5 décembre 2005

Nouveau contenu :
  • Une description supplémentaire a été ajoutée pour l'argument collation_name : il doit s'agir d'une valeur littérale et cet argument ne peut pas être représenté par une variable ou une expression.