Sequência de Collation – SQL Server

As sequências de collation controlam o modo como o SQL Server trata dados alfanuméricos para as opções de armazenamento, recuperação, classificação e comparação. O SQL Server permite especificar uma sequência de collation para suportar qualquer idioma atualmente usado no mundo.

As sequências de collation podem ser especificadas nos níveis de instância, banco de dados, tabela e coluna. A única sequência de collation que é obrigatória é definida em nível de instância, que tem como padrão todos os outros níveis, a não ser que sejam especificamente cancelados.

Uma sequência de collation define o conjunto alfanumérico suportado, incluindo diferenciação de letras maiúsculas e minúsculas, acentos e kana. Por exemplo, se você utilizar a sequência de collation SQL_Latin1_General_CP1_CI_AI, obterá suporte para um conjunto alfanumérico da Europa Ocidental que não diferencia letras maiúsculas e minúsculas e acentos. SQL_Latin1_General_CP1_CI_AI trata e, E, è, é, ê, e ë como se fossem o mesmo caractere para operações de classificação e comparação, enquanto uma sequência de collation francesa, que diferencia letras maiúsculas e minúsculas (CS) e acentos (AS), trata cada uma delas como um caractere diferente.

Para listar quais são as Collations disponíveis no SQL Server, execute o script a seguir:

SELECT * FROM ::fn_helpcollations()

Você terá este resultado:

collation_01

Notem que no final de cada collation existem algumas siglas (_AS, _WS, etc). Essas siglas possuem algumas diferenças que influenciam diretamente no resultado de uma consulta (ou qualquer outra query) e algumas funcionalidades no banco de dados. São 6 siglas:

AI: Accents Insensitive
AS: Accents Sensitive
CI: Case Insensitive
CS: Case Sensitive
KS: Kanatype Sensitive (1)
WS: Width Sensitive (2)

(1) Kana-sensitive: Especifica que o SQL Server deve distinguir entre os dois tipos de caracteres kana japoneses: hiragana e katakana. Se não for selecionada o SQL Server considera caracteres hiragana e katakana iguais.

(2) Width-sensitive: Especifica que o SQL Server deve distinguir entre um caractere de byte único (meia largura) e o mesmo caractere quando representado como um caractere de byte duplo (largura total). Se não for selecionada o SQL Server considera o byte único e byte duplo igualmente.

Ambas as notas ditas acimas são praticamente não utilizadas.

– Para saber a collation configurada a nível de instância (configurada na instalação), execute o script a seguir:

SELECT ServerProperty('Collation') As Collation_Name, ServerProperty('CollationID') As Collation_ID

– Para saber a collation configurada no seu banco de dados (database), execute o script a seguir:

SELECT DatabasePropertyEx('Database','Collation') As Collation_Name_DB

– Para saber a collation configurada em uma tabela, execute o script a seguir:

SELECT 
	Name, Collation 
FROM
	syscolumns 
WHERE 
	[Id] = Object_ID('Tabela')

Caso o retorno em alguma coluna seja NULL, significa que a collation assumida pela mesma é a mesma collation do database.

Links uteis
Como alterar a collation a nível de instância;
Conflitos de Collation em operações de comparação;
Eliminando caracteres especiais de strings no SQL Server.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s