Le classement peut être spécifié au niveau du serveur, de la base de données, de la colonne, de l'expression et de l'identificateur. Une méthode différente est requise pour chacun d'entre eux.
Classement au niveau du serveur
Voici comment trouver le classement au niveau du serveur :
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Cela renvoie le classement comme ceci :
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Vous pouvez également utiliser le sp_helpsort
procédure stockée pour renvoyer le classement par défaut du serveur :
EXECUTE sp_helpsort;
Cela renvoie le classement comme ceci :
Server default collation ---------------------------- Latin1-General, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive for Unicode Data, SQL Server Sort Order 52 on Code Page 1252 for non-Unicode Data
Collection au niveau de la base de données
Exécutez la requête suivante pour renvoyer le classement d'une base de données spécifique. Le WHERE
La clause vous permet de limiter les résultats à la ou aux bases de données qui vous intéressent :
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Cela donne quelque chose comme ceci :
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
Dans ce cas, nous avons spécifié la base de données appelée Music
.
Vous pouvez également utiliser le DATABASEPROPERTYEX()
fonction pour retourner le classement par défaut d'une base de données :
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Classement au niveau de la colonne
Le classement peut également être spécifié au niveau de la colonne. Pour savoir quel classement une colonne spécifique utilise, exécutez une requête sur sys.columns
. Comme ceci :
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Cela donne quelque chose comme ceci :
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Collation au niveau de l'expression et de l'identifiant
Le classement peut être appliqué à une expression de chaîne de caractères pour appliquer un cast de classement. Par exemple, vous pouvez utiliser le COLLATE
clause dans un SELECT
pour spécifier le classement à utiliser. Comme ceci :
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Ce classement utilise CI
pour insensible à la casse, et AI
pour les insensibles aux accents.
Nous pourrions changer cela en CS
pour la casse, et AS
pour les accents sensibles, et les résultats de la requête peuvent être triés différemment (selon les données) :
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Ainsi, cela vous permet de remplacer le classement appliqué au niveau de la base de données ou de la colonne lors de l'exécution d'une requête.