Sortering kan anges på servernivå, databasnivå, kolumnnivå, uttrycksnivå och identifierarnivå. En annan metod krävs för var och en av dessa.
Sortering på servernivå
Så här hittar du sorteringen på servernivån:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Detta returnerar sorteringen så här:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Du kan också använda sp_helpsort
lagrad procedur för att returnera standardsorteringen för servern:
EXECUTE sp_helpsort;
Detta returnerar sorteringen så här:
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 av databasnivå
Kör följande fråga för att returnera sorteringen av en specifik databas. WHERE
klausul låter dig begränsa resultaten till databasen/databaserna du är intresserad av:
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Detta resulterar i något i stil med detta:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
I det här fallet angav vi databasen som heter Music
.
Du kan också använda DATABASEPROPERTYEX()
funktion för att returnera standardsorteringen för en databas:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Sortering på kolumnnivå
Sortering kan också anges på kolumnnivå. För att ta reda på vilken sortering en specifik kolumn använder, kör en fråga mot sys.columns
. Så här:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Detta resulterar i något i stil med detta:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Sortering av uttryck och identifieringsnivå
Sortering kan tillämpas på ett teckensträngsuttryck för att tillämpa en sorteringscast. Du kan till exempel använda COLLATE
sats i en SELECT
uttalande för att specificera sorteringen som ska användas. Så här:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Den sammanställningen använder CI
för skiftlägesokänslig och AI
för accentokänslig.
Vi kan ändra det till CS
för skiftlägeskänsliga och AS
för accentkänsliga, och frågeresultaten kan sorteras olika (beroende på data):
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Så detta låter dig åsidosätta sorteringen som tillämpas på databas- eller kolumnnivå när du kör en fråga.