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.