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.