Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver le classement dans SQL Server (T-SQL)

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.