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.