sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man hittar sorteringen i SQL Server (T-SQL)

Sortering kan anges på servernivå, databasnivå, kolumnnivå, uttrycksnivå och identifierarnivå. En annan metod krävs för var och en av dessa.

Sortering på servernivå

Så här hittar du sorteringen på servernivån:

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

Detta returnerar sorteringen så här:

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


Du kan också använda sp_helpsort lagrad procedur för att returnera standardsorteringen för servern:

EXECUTE sp_helpsort;

Detta returnerar sorteringen så här:

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

Sortering av databasnivå

Kör följande fråga för att returnera sorteringen av en specifik databas. WHERE klausul låter dig begränsa resultaten till databasen/databaserna du är intresserad av:

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

Detta resulterar i något i stil med detta:

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

I det här fallet angav vi databasen som heter Music .

Du kan också använda DATABASEPROPERTYEX() funktion för att returnera standardsorteringen för en databas:

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

Sortering på kolumnnivå

Sortering kan också anges på kolumnnivå. För att ta reda på vilken sortering en specifik kolumn använder, kör en fråga mot sys.columns . Så här:

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

Detta resulterar i något i stil med detta:

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

Sortering av uttryck och identifieringsnivå

Sortering kan tillämpas på ett teckensträngsuttryck för att tillämpa en sorteringscast. Du kan till exempel använda COLLATE sats i en SELECT uttalande för att specificera sorteringen som ska användas. Så här:

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

Den sammanställningen använder CI för skiftlägesokänslig och AI för accentokänslig.

Vi kan ändra det till CS för skiftlägeskänsliga och AS för accentkänsliga, och frågeresultaten kan sorteras olika (beroende på data):

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

Så detta låter dig åsidosätta sorteringen som tillämpas på databas- eller kolumnnivå när du kör en fråga.


  1. Dynamiskt svänga ett bord Oracle

  2. Är det möjligt att ange villkor i Count()?

  3. INSTR() Funktion i Oracle

  4. Java:Anropar en lagrad procedur i en Oracle-databas