COLLATE (Transact-SQL)
S’applique à :ENTREPÔT PDW (SQL Database) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)Dans Microsoft Fabric
Définit un classement pour une colonne de base de données ou de table, ou un cast de classement lors d’une application à une expression de chaîne de caractères. Le nom du classement peut être un nom de classement Windows ou SQL. Si aucun classement n’est spécifié pendant la création de la base de données, le classement par défaut de l’instance SQL Server est attribué à la base de données. Si aucun classement n’est spécifié pendant la création d’une colonne de table, le classement par défaut de la base de données est attribué à la colonne.
Conventions de la syntaxe 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 colonne ou à la définition de base de données. collation_name peut uniquement être un Windows_collation_name ou un SQL_collation_name. 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 d’un Windows Collation Name.
SQL_collation_name est le nom de classement d’un SQL Server Collation Name.
Remarque
Dans Microsoft Fabric, le seul classement autorisé est : Latin1_General_100_BIN2_UTF8.
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, Elles sont associées aux limitations suivantes :
la création ou modification d'une base de données ;
Vous pouvez utiliser la clause COLLATE de l’instruction
CREATE DATABASE
ouALTER 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, la base de données est affectée au classement par défaut de l’instance de SQL Server.Remarque
Les classements Unicode Windows peuvent uniquement être utilisés avec la clause COLLATE pour appliquer des classements aux nchar, nvarcharet ntext types de données au niveau des colonnes et des données au niveau de l’expression ; ils ne peuvent pas être utilisés avec la clause COLLATE pour définir ou modifier le classement d’une base de données ou d’une instance de serveur.
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
ouALTER 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, la colonne est affectée au classement par défaut de la base de données.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 actuelle pour la connexion au lieu detempdb
.la conversion du classement d'une expression.
Vous pouvez utiliser la clause COLLATE pour appliquer une expression de caractère à un classement particulier. 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.
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 avec des noms différents uniquement dans le cas peuvent être créées dans une base de données avec un classement respectant la casse, mais elles ne peuvent pas être créées dans une base de données avec un classement respectant la casse. Pour plus d'informations, consultez Database Identifiers.
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 du serveur.
La clause COLLATE peut être appliquée uniquement pour les types de données char, varchar, text, nchar, nvarchar et ntext.
COLLATE utilise collate_name pour faire référence au nom du classement SQL Server ou du classement Windows à appliquer à l’expression, à la définition de colonne ou à la définition de base de données. collation_name peut uniquement être un Windows_collation_name ou un SQL_collation_name, et le paramètre doit contenir une valeur littérale. collation_name ne peut pas être représenté par une variable ou une expression.
Les classements sont généralement identifiés par un nom de classement, hormis dans le programme d'installation. Dans le programme d’installation, vous spécifiez à la place l’indicateur du classement de la racine (les paramètres régionaux de classement) pour les classements Windows, puis vous spécifiez des options de tri qui respectent, ou non, la casse et les accents.
Vous pouvez exécuter la fonction système fn_helpcollations pour récupérer la liste de tous les noms de classement valides pour les classements Windows et les classements SQL Server autorisés :
SELECT name, description
FROM fn_helpcollations();
SQL Server ne peut prendre en charge que les pages de codes 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 ;
- Lors de la restauration ou de l’attachement d’une base de données, le classement par défaut de cette dernière et le classement de colonnes ou paramètres char, varchar et text de la base de données doivent être pris en charge par le système d’exploitation.
Remarque
Les traductions de pages de codes sont prises en charge pour les types de données char et varchar, mais pas pour text. La perte de données pendant les traductions de pages de codes n’est pas signalée.
Si le classement spécifié ou utilisé par l’objet référencé utilise une page de codes qui n’est pas prise en charge par Windows, SQL Server affiche une erreur.
Exemples
R. Spécification d’un classement pendant une opération SELECT
L'exemple suivant crée une table simple et insère 4 lignes. Il applique ensuite deux classements lors de la sélection de données de la table, montrant comment Chiapas
est trié différemment.
CREATE TABLE Locations
(Place varchar(15) NOT NULL);
GO
INSERT Locations(Place) VALUES ('Chiapas'),('Colima')
, ('Cinco Rios'), ('California');
GO
--Apply a typical collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Latin1_General_CS_AS_KS_WS ASC;
GO
-- Apply a Spanish collation
SELECT Place FROM Locations
ORDER BY Place
COLLATE Traditional_Spanish_ci_ai ASC;
GO
-- Using LIKE
SELECT Place FROM Locations
WHERE Place COLLATE Latin1_General_CI_AS LIKE 'C%' ASC;
GO
Voici les résultats de la première requête SELECT
.
Place
-------------
California
Chiapas
Cinco Rios
Colima
Voici les résultats de la deuxième requête SELECt
.
Place
-------------
California
Cinco Rios
Colima
Chiapas
Voici les résultats de la troisième requête SELECt
.
Place
-------------
Chiapas
Colima
Cinco Rios
California
B. Exemples supplémentaires
Pour voir d’autres exemples d’utilisation de COLLATE, consultez l’exemple G. Créer une base de données et spécifier un nom et des options de classement de la rubrique CREATE DATABASE et l’exemple V. Modifier le classement des colonnes de la rubrique ALTER TABLE.