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.