sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan finder du sorteringen i SQL Server (T-SQL)

Sortering kan angives på serverniveau, databaseniveau, kolonneniveau, udtryksniveau og identifikatorniveau. Der kræves en anden metode for hver af disse.

Sortering på serverniveau

Sådan finder du sorteringen på serverniveau:

SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';

Dette returnerer sorteringen sådan her:

Server Collation
----------------------------
SQL_Latin1_General_CP1_CI_AS


Du kan også bruge sp_helpsort gemt procedure for at returnere standardsorteringen for serveren:

EXECUTE sp_helpsort;

Dette returnerer sorteringen sådan her:

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

Sortering på databaseniveau

Kør følgende forespørgsel for at returnere sorteringen af ​​en bestemt database. WHERE klausul giver dig mulighed for at indsnævre resultaterne til databasen/de databaser, du er interesseret i:

SELECT 
    name, 
    collation_name 
FROM sys.databases
WHERE name = 'Music';

Dette resulterer i noget som dette:

name   collation_name              
-----  ----------------------------
Music  SQL_Latin1_General_CP1_CI_AS

I dette tilfælde specificerede vi databasen kaldet Music .

Du kan også bruge DATABASEPROPERTYEX() funktion for at returnere standardsorteringen for en database:

SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;

Sortering på kolonneniveau

Sortering kan også angives på kolonneniveau. For at finde ud af, hvilken sortering en specifik kolonne bruger, skal du køre en forespørgsel mod sys.columns . Sådan:

SELECT 
    name, 
    collation_name 
FROM sys.columns 
WHERE name = N'ArtistName';

Dette resulterer i noget som dette:

name   collation_name              
----------  ----------------------------
ArtistName  SQL_Latin1_General_CP1_CI_AS

Sortering af udtryk og identifikatorniveau

Sortering kan anvendes på et tegnstrengudtryk for at anvende en sorteringscast. For eksempel kan du bruge COLLATE klausul i en SELECT sætning for at angive den sortering, der skal bruges. Sådan:

USE Music;
SELECT ArtistId, ArtistName
FROM Artists
ORDER BY ArtistName COLLATE Latin1_General_CI_AI;

Denne sortering bruger CI for store og små bogstaver og AI for accentufølsomme.

Vi kunne ændre det til CS for store og små bogstaver og AS for accentfølsomme, og forespørgselsresultaterne kan sorteres forskelligt (afhængigt af dataene):

USE Music;
SELECT ArtistId, ArtistName
FROM Artists
ORDER BY ArtistName COLLATE Latin1_General_CS_AS;

Så dette giver dig mulighed for at tilsidesætte den sortering, der anvendes på database- eller kolonneniveau, når du kører en forespørgsel.


  1. Hvordan viser jeg de sidste forespørgsler udført på MySQL?

  2. Indvirkning af fragmentering på udførelsesplaner

  3. Betinget bestilling af

  4. Hvad er det korrekte indeks for at forespørge strukturer i arrays i Postgres jsonb?