sql >> Base de Datos >  >> RDS >> Mysql

¿Qué significa exactamente el conjunto de caracteres y la intercalación?

Desde MySQL docs :

Un conjunto de caracteres es un conjunto de símbolos y codificaciones. Una colección es un conjunto de reglas para comparar caracteres en un conjunto de caracteres. Aclaremos la distinción con un ejemplo de un conjunto de caracteres imaginarios.

Supongamos que tenemos un alfabeto con cuatro letras:'A', 'B', 'a', 'b'. Damos a cada letra un número:'A' =0, 'B' =1, 'a' =2, 'b' =3. La letra 'A' es un símbolo, el número 0 es la codificación de 'A', y la combinación de las cuatro letras y sus codificaciones es un juego de caracteres.

Ahora, suponga que queremos comparar dos valores de cadena, 'A' y 'B'. La forma más sencilla de hacer esto es mirar las codificaciones:0 para 'A' y 1 para 'B'. Como 0 es menor que 1, decimos que 'A' es menor que 'B'. Ahora, lo que acabamos de hacer es aplicar una intercalación a nuestro conjunto de caracteres. La colación es un conjunto de reglas (solo una regla en este caso):"comparar las codificaciones". A esta colación, la más simple de todas las posibles, la llamamos colación binaria.

Pero, ¿y si queremos decir que las minúsculas y las mayúsculas son equivalentes? Entonces tendríamos al menos dos reglas:(1) tratar las letras minúsculas 'a' y 'b' como equivalentes a 'A' y 'B'; (2) luego compare las codificaciones. Llamamos a esto una colación que no distingue entre mayúsculas y minúsculas. Es un poco más complejo que una colación binaria.

En la vida real, la mayoría de los conjuntos de caracteres tienen muchos caracteres:no solo 'A' y 'B', sino alfabetos completos, a veces varios alfabetos o sistemas de escritura orientales con miles de caracteres, junto con muchos símbolos especiales y signos de puntuación. También en la vida real, la mayoría de las intercalaciones tienen muchas reglas:no solo la insensibilidad a mayúsculas y minúsculas, sino también la insensibilidad a los acentos (un "acento" es una marca adjunta a un carácter como en alemán 'ö') y asignaciones de caracteres múltiples (como la regla que 'ö' ='OE ' en una de las dos colaciones alemanas).