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

Obtengo resultados duales de la consulta mysql cuando uso caracteres internacionales, es decir, Å/Ä=A &Ö=O,

Tu "problema" es el utf8_unicode_ci colación. Esa intercalación hace "expansiones de caracteres", lo que significa que las diéresis y sus caracteres base se tratan como iguales incluso en un = comparación :

A = Ä
O = Ö
...

El segundo ejemplo en esta página del manual de mySQL explica el problema:9.1.7.8. Ejemplos del efecto de la colación

Lo que tendría que hacer es cambiar a una intercalación que distinga entre diéresis y carácter base (por ejemplo, utf8_general_ci o utf8_general_bin ) o cambie a una intercalación diferente solo cuando haga la comparación:

select * from users where username like 'Björn' COLLATE utf8_general_ci;

obviamente, esto es más lento, porque la conversión de intercalación debe realizarse para cada registro durante la consulta.