Respostas:
Basicamente, como classificar e comparar seqüências de caracteres.
Exemplos:
Comparando:
Ordenação:
Equivalência de caracteres especiais
Algum SQL (SQL Server 2008 ou superior)
DECLARE @foo TABLE (bar varchar(2))
INSERT @foo VALUES ('z'), ('æ'), ('ø'), ('å'), ('ss'), ('ß'), ('a'), ('ä')
SELECT * FROM @foo ORDER BY bar COLLATE Finnish_Swedish_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Norwegian_100_CI_AS
SELECT * FROM @foo ORDER BY bar COLLATE Latin1_General_100_CS_AS --german (western europe) and default
SELECT * FROM @foo ORDER BY bar COLLATE German_PhoneBook_100_CS_AS
"Agrupamento" é provavelmente melhor definido em etymology.com,
final de 14c., "ato de reunir e comparar"
Não mudou nos últimos 600 anos. "agrupar" significa "reunir" e, se é a ordem de um livro, cronologicamente ou não em um banco de dados, é tudo a mesma coisa.
Como se aplica à Ciência da Computação, o que estamos fazendo é separar o mecanismo de armazenamento da ordem . Você já deve ter ouvido falar do ASCII-betical . Isso se refere a uma comparação baseada na codificação binária de caracteres ASCII. Nesse sistema, armazenamento e agrupamento são dois no mesmo. Se a "codificação" ASCII padronizada mudasse, o "agrupamento" (ordem) também mudaria.
O POSIX começou a romper isso LC_COLLATE
. Mas, quando entramos no Unicode, surgiu um consórcio para padronizar os agrupamentos: UTI.
Na especificação SQL, existem duas extensões para fornecer agrupamentos,
F690
: “Suporte de agrupamento:
Inclui collation name
, collation clause
, collation definition
e drop collation
.
F692
: Suporte estendido ao agrupamento,
Inclui anexar um agrupamento padrão diferente a uma coluna no esquema.
Essencialmente, eles fornecem a capacidade CREATE
e DROP
agrupamentos, especificá-los para operadores e classificações e definir um padrão para colunas.
Para obter mais informações sobre o que o SQL tem a oferecer, consulte
Em vez de colar um exemplo limitado, aqui está o conjunto de testes do PostgreSQL, que é bastante extenso. Confira pelo menos o primeiro link e procure'Türkiye' COLLATE "tr-x-icu" ILIKE '%KI%' AS "false"
collate.icu.utf8.out
collate.linux.utf8.out
collate.out
Provavelmente não vale a pena conferir, mas eu o coloquei aqui por completo, cheques chatos de POSIX.