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.