Съпоставянето може да бъде определено на ниво сървър, ниво на база данни, ниво на колона, ниво на израз и ниво на идентификатор. За всеки от тях е необходим различен метод.
Съпоставяне на ниво сървър
Ето как да намерите съпоставянето на ниво сървър:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Това връща съпоставянето по следния начин:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Можете също да използвате sp_helpsort
съхранена процедура за връщане на съпоставянето по подразбиране за сървъра:
EXECUTE sp_helpsort;
Това връща съпоставянето по следния начин:
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
Сравняване на ниво база данни
Изпълнете следната заявка, за да върнете съпоставянето на конкретна база данни. WHERE
клаузата ви позволява да стесните резултатите до базата/ите, от които се интересувате:
SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Това води до нещо подобно:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
В този случай посочихме базата данни, наречена Music
.
Можете също да използвате DATABASEPROPERTYEX()
функция за връщане на съпоставянето по подразбиране за база данни:
SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Сравниване на ниво колона
Съпоставянето може да бъде определено и на ниво колона. За да разберете какво съпоставяне използва конкретна колона, изпълнете заявка срещу sys.columns
. Като това:
SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Това води до нещо подобно:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Сравниване на ниво израз и идентификатор
Съпоставянето може да се приложи към израз на низ от символи, за да се приложи привеждане на съпоставяне. Например, можете да използвате COLLATE
клауза в SELECT
оператор, за да посочите съпоставянето, което да се използва. Като това:
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Това съпоставяне използва CI
за независимо от главните букви и AI
за нечувствителни към акценти.
Можем да променим това на CS
за чувствителни към малки и малки букви и AS
за чувствителни на акценти и резултатите от заявката могат да бъдат сортирани по различен начин (в зависимост от данните):
USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Така че това ви позволява да замените съпоставянето, което се прилага на ниво база данни или колона, когато изпълнявате заявка.