sql >> Databáze >  >> RDS >> Sqlserver

Jak najít řazení v SQL Server (T-SQL)

Porovnání lze zadat na úrovni serveru, databáze, sloupce, výrazu a na úrovni identifikátoru. Pro každý z nich je vyžadována jiná metoda.

Řazení na úrovni serveru

Zde je návod, jak najít řazení na úrovni serveru:

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

Toto vrátí řazení takto:

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


Můžete také použít sp_helpsort uložená procedura pro vrácení výchozího řazení pro server:

EXECUTE sp_helpsort;

Toto vrátí řazení takto:

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

Řazení na úrovni databáze

Spuštěním následujícího dotazu vrátíte řazení konkrétní databáze. WHERE klauzule vám umožňuje zúžit výsledky na databázi/databáze, které vás zajímají:

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

Výsledkem je něco takového:

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

V tomto případě jsme specifikovali databázi nazvanou Music .

Můžete také použít DATABASEPROPERTYEX() funkce pro vrácení výchozího řazení pro databázi:

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

Řazení na úrovni sloupců

Řazení lze také zadat na úrovni sloupců. Chcete-li zjistit, jaké řazení konkrétní sloupec používá, spusťte dotaz proti sys.columns . Takhle:

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

Výsledkem je něco takového:

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

Řazení na úrovni výrazů a identifikátorů

Porovnání lze použít na výraz řetězce znaků a použít přetypování řazení. Můžete například použít COLLATE klauzule v SELECT příkaz k určení řazení, které se má použít. Takhle:

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

Toto řazení používá CI pro malá a velká písmena a AI pro necitlivé na přízvuk.

Mohli bychom to změnit na CS pro rozlišování velkých a malých písmen a AS pro zvýraznění citlivé a výsledky dotazu mohou být seřazeny odlišně (v závislosti na datech):

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

To vám umožňuje přepsat řazení, které se použije na úrovni databáze nebo sloupce při spuštění dotazu.


  1. Jak pokračovat ve zpracování smyčky kurzoru po výjimce v Oracle

  2. Možnosti ladění výkonu Azure SQL Database

  3. SQL, jedinečné a primární klíče

  4. Vytváření přístupového menu s ovládáním stromového zobrazení