Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak znaleźć sortowanie w SQL Server (T-SQL)

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:czy powinienem używać tabel information_schema zamiast tabel sys?

  2. Data i godzina programu SQL Server PODOBNY wybór?

  3. SQL:przeanalizuj imię, drugie imię i nazwisko z pola fullname

  4. Skrypt do zabijania wszystkich połączeń z bazą danych (więcej niż RESTRICTED_USER ROLLBACK)

  5. SQL MAX wielu kolumn?