Sortowanie można określić na poziomie serwera, bazy danych, kolumny, wyrażenia i identyfikatora. Dla każdego z nich wymagana jest inna metoda.
Sortowanie na poziomie serwera
Oto jak znaleźć sortowanie na poziomie serwera:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Zwraca to sortowanie w ten sposób:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Możesz również użyć sp_helpsort
procedura składowana do zwrócenia domyślnego sortowania dla serwera:
EXECUTE sp_helpsort;
Zwraca to sortowanie w ten sposób:
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
Sortowanie na poziomie bazy danych
Uruchom następujące zapytanie, aby zwrócić sortowanie określonej bazy danych. WHERE
klauzula pozwala zawęzić wyniki do interesujących Cię baz danych:
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Daje to coś takiego:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
W tym przypadku określiliśmy bazę danych o nazwie Music
.
Możesz także użyć DATABASEPROPERTYEX()
funkcja zwracająca domyślne sortowanie bazy danych:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Sortowanie na poziomie kolumny
Sortowanie można również określić na poziomie kolumny. Aby dowiedzieć się, jakiego sortowania używa konkretna kolumna, uruchom zapytanie w sys.columns
. Tak:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Daje to coś takiego:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Układanie poziomów wyrażenia i identyfikatora
Sortowanie można zastosować do wyrażenia ciągu znaków, aby zastosować rzutowanie sortowania. Na przykład możesz użyć COLLATE
klauzula w SELECT
oświadczenie, aby określić sortowanie, które ma być używane. Tak:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
To zestawienie używa CI
dla wielkości liter i AI
dla niewrażliwych na akcent.
Moglibyśmy to zmienić na CS
dla wielkości liter i AS
dla wrażliwych na akcenty, a wyniki zapytania mogą być różnie sortowane (w zależności od danych):
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Dzięki temu możesz pominąć sortowanie stosowane na poziomie bazy danych lub kolumny podczas uruchamiania zapytania.