sql >> Database >  >> RDS >> Sqlserver

De sortering vinden in SQL Server (T-SQL)

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.


  1. MariaDB ROWNUM() uitgelegd

  2. Emuleren MySQL LIMIT-clausule in Microsoft SQL Server 2000

  3. Een databasemodel ontwerpen voor een bioscoopreserveringssysteem

  4. SQL:in clausule in opgeslagen procedure:hoe waarden doorgeven