Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So finden Sie die Sortierung in SQL Server (T-SQL)

Die Sortierung kann auf Serverebene, Datenbankebene, Spaltenebene, Ausdrucksebene und Bezeichnerebene angegeben werden. Für jede davon ist eine andere Methode erforderlich.

Sortierung auf Serverebene

So finden Sie die Sortierung auf Serverebene:

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

Dies gibt die Sortierung wie folgt zurück:

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


Sie können auch sp_helpsort verwenden gespeicherte Prozedur, um die Standardsortierung für den Server zurückzugeben:

EXECUTE sp_helpsort;

Dies gibt die Sortierung wie folgt zurück:

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

Vergleich auf Datenbankebene

Führen Sie die folgende Abfrage aus, um die Sortierung einer bestimmten Datenbank zurückzugeben. Das WHERE -Klausel können Sie die Ergebnisse auf die Datenbank(en) eingrenzen, an der/denen Sie interessiert sind:

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

Dies ergibt etwa Folgendes:

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

In diesem Fall haben wir die Datenbank namens Music angegeben .

Sie können auch DATABASEPROPERTYEX() verwenden Funktion, um die Standardsortierung für eine Datenbank zurückzugeben:

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

Sortierung auf Spaltenebene

Die Sortierung kann auch auf Spaltenebene angegeben werden. Um herauszufinden, welche Sortierung eine bestimmte Spalte verwendet, führen Sie eine Abfrage für sys.columns aus . So:

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

Dies ergibt etwa Folgendes:

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

Zuordnung auf Ausdrucks- und Bezeichnerebene

Sortierung kann auf einen Zeichenfolgenausdruck angewendet werden, um eine Sortierungsumwandlung anzuwenden. Sie können zum Beispiel COLLATE verwenden -Klausel in einem SELECT -Anweisung, um die zu verwendende Sortierung anzugeben. So:

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

Diese Sortierung verwendet CI für case-insensitive und AI für Akzent-unempfindlich.

Wir könnten das in CS ändern für Groß- und Kleinschreibung und AS für akzentsensitiv, und die Abfrageergebnisse können anders sortiert werden (abhängig von den Daten):

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

Auf diese Weise können Sie also die Sortierung überschreiben, die beim Ausführen einer Abfrage auf Datenbank- oder Spaltenebene angewendet wird.