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

MySQL no me trata como yo?

Haciendo referencia a http://mysql.rjweb.org/utf8_collations.html , veo que ı=i en 3 intercalaciones:utf8_general_ci, utf8_general_mysql500_ci, utf8_turkish_ci. Sin embargo, para la colación turca, I=ı ordena antes que otros yoes acentuados. En todas las demás intercalaciones ı ordena después de todos los I, como si se tratara como una letra separada.

Mientras tanto İ=I en todas las intercalaciones excepto utf8_turkish_ci.

La trama se complica con MySQL 8.0. utf8mb4_tr_0900_ai_ci (solo) tiene este orden:

I=Ì=Í=Î=Ï=Ĩ=Ī=Ĭ=Į=ı sort before  i=ì=í=î=ï=ĩ=ī=ĭ=į=İ

Mientras tanto ä=Ä y coinciden con la mayoría de las otras A acentuadas para la mayoría de las intercalaciones (incluidas las turcas).

Conclusión:parece que utf8[mb4]_general_ci es la única intercalación en 5.7 u 8.0 que siempre tratará una i sin puntos (o una I con puntos) igual a una 'i/I normal y al mismo tiempo ignorar las diéresis.

Advertencia:las intercalaciones "generales" no prueban más de un carácter a la vez. Es decir, una "diéresis sin espacio" más una vocal no se tratará como igual a la combinación.

En ese enlace... El único carácter æ se ordena igual que las dos letras ae para algunas colaciones. Eso se indica mediante:Aa ae=æ az . En aproximadamente la mitad de las otras intercalaciones, el carácter æ se trata como una carta separada; esto se indica por estar después de az y antes de b . O incluso después de zz para colaciones escandinavas. Este concepto de letra separada a veces se aplica a pares de letras, por ejemplo cs (húngaro) y ch (español tradicional).