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.