El punto principal de la recopilación de una base de datos es determinar cómo se ordenan y comparan los datos.
Sensible a mayúsculas y minúsculas en las comparaciones de cadenas
SELECT "New York" = "NEW YORK";`
devolverá verdadero para una colación que no distingue entre mayúsculas y minúsculas; false para una que distingue entre mayúsculas y minúsculas.
_ci
puede indicar qué intercalación hace cuál. y _cs
sufijo en el nombre de la colación. _bin
las colaciones hacen comparaciones binarias (las cadenas deben ser 100% idénticas).
Comparación de diéresis/caracteres acentuados
la intercalación también determina si los caracteres acentuados se tratan como sus contrapartes de base latina en las comparaciones de cadenas.
SELECT "Düsseldorf" = "Dusseldorf";
SELECT "Èclair" = "Eclair";
devolverá verdadero en el primer caso; falso en este último. Deberá leer la descripción de cada colación para saber cuál es cuál.
Ordenación de cadenas
La intercalación influye en la forma en que se ordenan las cadenas.
Por ejemplo,
-
Diéresis
Ä Ö Ü
están al final del alfabeto en el alfabeto finlandés/suecolatin1_swedish_ci
-
se tratan como
A O U
en alemán Clasificación DIN-1 (latin_german1_ci
) -
y como
AE OE UE
en alemán Clasificación DIN-2 (latin_german2_ci
). (clasificación de "agenda telefónica") -
En
latin1_spanish_ci
, "ñ" (n-tilde) es una letra separada entre "n" y "o".
Estas reglas darán como resultado diferentes órdenes de clasificación cuando se utilicen caracteres no latinos.
Uso de intercalaciones en tiempo de ejecución
Debe elegir una intercalación para su tabla y columnas, pero si no le importa el impacto en el rendimiento, puede forzar las operaciones de la base de datos en una determinada intercalación en tiempo de ejecución usando COLLATE
palabra clave.
Esto ordenará table
por el name
columna usando las reglas de clasificación alemanas DIN-2:
SELECT name
FROM table
ORDER BY name COLLATE latin1_german2_ci;
Usando COLLATE
en tiempo de ejecución tendrá implicaciones en el rendimiento, ya que cada columna debe convertirse durante la consulta. Así que piénselo dos veces antes de aplicar esto a grandes conjuntos de datos.
Referencia MySQL:
- Conjuntos de caracteres y intercalaciones compatibles con MySQL
- Ejemplos del efecto de la colación
- Problemas de intercalación