Sortering kan worden gespecificeerd op serverniveau, databaseniveau, kolomniveau, expressieniveau en identificatieniveau. Voor elk van deze is een andere methode vereist.
Sorteren op serverniveau
Zo vindt u de sortering op serverniveau:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Dit geeft de sortering als volgt terug:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
U kunt ook de sp_helpsort
. gebruiken opgeslagen procedure om de standaardsortering voor de server te retourneren:
EXECUTE sp_helpsort;
Dit geeft de sortering als volgt terug:
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
Sorteren op databaseniveau
Voer de volgende query uit om de sortering van een specifieke database te retourneren. De WHERE
clausule stelt u in staat om de resultaten te verfijnen tot de database(s) waarin u geïnteresseerd bent:
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Dit resulteert in zoiets als dit:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
In dit geval hebben we de database gespecificeerd met de naam Music
.
U kunt ook de DATABASEPROPERTYEX()
. gebruiken functie om de standaard sortering voor een database te retourneren:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Sorteren op kolomniveau
Sortering kan ook op kolomniveau worden gespecificeerd. Als u wilt weten welke sortering een specifieke kolom gebruikt, voert u een query uit op sys.columns
. Zoals dit:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Dit resulteert in zoiets als dit:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Collatie van expressie en identificatieniveau
Sortering kan worden toegepast op een tekenreeksexpressie om een sorteringcast toe te passen. U kunt bijvoorbeeld de COLLATE
. gebruiken clausule in een SELECT
statement om de te gebruiken sortering te specificeren. Zoals dit:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Die sortering gebruikt CI
voor hoofdletterongevoelig en AI
voor accentongevoelig.
We zouden dat kunnen veranderen in CS
voor hoofdlettergevoelig, en AS
voor accentgevoelig, en de zoekresultaten kunnen anders worden gesorteerd (afhankelijk van de gegevens):
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Dit stelt u dus in staat om de sortering te overschrijven die wordt toegepast op database- of kolomniveau bij het uitvoeren van een query.