Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como encontrar o agrupamento no SQL Server (T-SQL)


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.