O ponto principal de um agrupamento de banco de dados é determinar como os dados são classificados e comparados.
Sensibilidade de maiúsculas e minúsculas de comparações de strings
SELECT "New York" = "NEW YORK";`
retornará true para um agrupamento sem distinção entre maiúsculas e minúsculas; false para um case sensitive.
Qual agrupamento faz o que pode ser informado pelo
_ci
e _cs
sufixo no nome do agrupamento. _bin
collations fazem comparações binárias (strings devem ser 100% idênticas). Comparação de tremas/caracteres acentuados
a ordenação também determina se os caracteres acentuados são tratados como suas contrapartes de base latina em comparações de strings.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
retornará true no primeiro caso; falso neste último. Você precisará ler a descrição de cada agrupamento para descobrir qual é qual.
Classificação de strings
A ordenação influencia a maneira como as strings são classificadas.
Por exemplo,
-
TremasÄ Ö Ü
estão no final do alfabeto no alfabeto finlandês/suecolatin1_swedish_ci
-
eles são tratados comoA O U
em alemão classificação DIN-1 (latin_german1_ci
)
-
e comoAE OE UE
em alemão classificação DIN-2 (latin_german2_ci
). (classificação de "catálogo telefônico")
-
Emlatin1_spanish_ci
, "ñ" (n-til) é uma letra separada entre "n" e "o".
Essas regras resultarão em diferentes ordens de classificação quando caracteres não latinos forem usados.
Usando ordenações em tempo de execução
Você precisa escolher um agrupamento para sua tabela e colunas, mas se não se importar com o impacto no desempenho, poderá forçar as operações do banco de dados em um determinado agrupamento em tempo de execução usando o
COLLATE
palavra-chave. Isso classificará a
table
pelo name
coluna usando regras de classificação DIN-2 alemãs:SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Usando
COLLATE
em tempo de execução terá implicações de desempenho, pois cada coluna deve ser convertida durante a consulta. Portanto, pense duas vezes antes de aplicar isso em grandes conjuntos de dados. Referência MySQL:
- Conjuntos de caracteres e agrupamentos suportados pelo MySQL
- Exemplos do efeito do agrupamento
- Problemas de agrupamento