O agrupamento pode ser especificado no nível do servidor, no nível do banco de dados, no nível da coluna, no nível da expressão e no nível do identificador. Um método diferente é necessário para cada um deles.
Agrupamento de nível de servidor
Veja como encontrar o agrupamento de nível de servidor:
SELECT CONVERT (varchar, SERVERPROPERTY('collation')) AS 'Server Collation';
Isso retorna o agrupamento assim:
Server Collation ---------------------------- SQL_Latin1_General_CP1_CI_AS
Você também pode usar o
sp_helpsort
procedimento armazenado para retornar o agrupamento padrão para o servidor:EXECUTE sp_helpsort;
Isso retorna o agrupamento assim:
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
Agrupamento em nível de banco de dados
Execute a seguinte consulta para retornar o agrupamento de um banco de dados específico. O
WHERE
cláusula permite restringir os resultados ao banco de dados em que você está interessado:SELECT name, collation_name FROM sys.databases WHERE name = 'Music';
Isso resulta em algo assim:
name collation_name ----- ---------------------------- Music SQL_Latin1_General_CP1_CI_AS
Neste caso, especificamos o banco de dados chamado
Music
. Você também pode usar o
DATABASEPROPERTYEX()
função para retornar o agrupamento padrão para um banco de dados:SELECT DATABASEPROPERTYEX('Music', 'Collation') AS Collation;
Agrupamento em nível de coluna
O agrupamento também pode ser especificado no nível da coluna. Para descobrir qual agrupamento uma coluna específica usa, execute uma consulta em
sys.columns
. Assim:SELECT name, collation_name FROM sys.columns WHERE name = N'ArtistName';
Isso resulta em algo assim:
name collation_name ---------- ---------------------------- ArtistName SQL_Latin1_General_CP1_CI_AS
Agrupamento de nível de expressão e identificador
O agrupamento pode ser aplicado a uma expressão de cadeia de caracteres para aplicar uma conversão de agrupamento. Por exemplo, você pode usar o
COLLATE
cláusula em um SELECT
para especificar o agrupamento a ser usado. Assim:USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CI_AI;
Esse agrupamento usa
CI
para maiúsculas e minúsculas e AI
para acentos insensíveis. Poderíamos mudar isso para
CS
para maiúsculas e minúsculas e AS
para acentos, e os resultados da consulta podem ser classificados de forma diferente (dependendo dos dados):USE Music; SELECT ArtistId, ArtistName FROM Artists ORDER BY ArtistName COLLATE Latin1_General_CS_AS;
Portanto, isso permite substituir o agrupamento aplicado no banco de dados ou no nível da coluna ao executar uma consulta.