2010-07-24 4 views
12

Entiendo los conjuntos de caracteres pero no entiendo la intercalación. Sé que obtienes una intercalación por defecto con cada conjunto de caracteres en Mysql o cualquier RDBMS, ¡pero aún no lo entiendo! ¿Alguien puede explicar en términos sencillos?No entiendo Collation? (Mysql, RDBMS, conjuntos de caracteres)

gracias de antemano ;-)

+0

¿Qué le parece el cotejo significa? – msw

Respuesta

47

El punto principal de una intercalación de base de datos es determinar cómo se ordenan y se comparan los datos.

mayúsculas y minúsculas de las comparaciones de cadenas

SELECT "New York" = "NEW YORK";` 

volverá cierto para un caso de colación insensibles; falso para uno sensible a mayúsculas y minúsculas.

Qué clasificación puede decirse con el sufijo _ci y _cs en el nombre de la recopilación. _bin las comparaciones 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 homólogos de base latino en las comparaciones de cadenas.

SELECT "Düsseldorf" = "Dusseldorf"; 
SELECT "Èclair" =  "Eclair"; 

devolverá verdadero en el primer caso; falso en el último. Deberá leer la descripción de cada recopilación para descubrir cuál es cuál.

Cadena de clasificación

La colación influye en la forma como las cadenas se ordenan.

Por ejemplo,

  • Las diéresis Ä Ö Ü están en el final del alfabeto en el alfabeto finlandés/sueco latin1_swedish_ci

  • son tratados como A O U en alemán DIN-1 de clasificación (latin_german1_ci)

  • y como AE OE UE en alemán clasificación DIN-2 (latin_german2_ci). (clasificación de "directorio telefónico"

  • En latin1_spanish_ci, "ñ" (n-tilde) es una letra separada entre "n" y "o".

Estas reglas darán lugar a diferentes órdenes de clasificación cuando se utilizan caracteres no latinos.

Uso de colaciones en tiempo de ejecución

Usted tiene que elegir una colación para su mesa y columnas, pero si no te importa el impacto en el rendimiento, se puede obligar a las operaciones de base de datos en un determinado cotejo en tiempo de ejecución utilizando la COLLATE palabra clave.

Esto ordenará table por la columna de name usando DIN-2 reglas de clasificación alemana:

SELECT name 
FROM table 
ORDER BY name COLLATE latin1_german2_ci; 

Usando COLLATE en tiempo de ejecución tendrá consecuencias en el rendimiento, ya que cada columna tiene que ser convertido durante la consulta. Así que piense dos veces antes de aplicar esto, haga grandes conjuntos de datos.

MySQL Referencia:

+2

+1, maldita buena explicación de un tema complejo –

+0

+1 de mí, también. – TomTom

+0

+1 aquí también. Es genial cuando las personas se toman el tiempo y explican las cosas de una manera realmente útil. Buen trabajo, señor. – cbmeeks

4

la colación es información acerca de cómo las cadenas deben ser ordenados y comparados.

Contiene, por ejemplo, sensibilidad a las mayúsculas y minúsculas, p. ya sea a = A, consideraciones de carácter especial, p. ya sea a = á, y el orden de los caracteres, p. ya sea O < Ö.