Pregunta La instrucción LIKE de MySQL interpreta "o" y "ö" como el mismo


Tengo una aplicación Rails 3 conectada a una base de datos MySQL. La codificación utilizada es utf-8. La base de datos conecta una gran cantidad de datos en sueco y tiene una función de búsqueda.

Cuando busco gotland (una isla sueca) resultados para Östergötland (shire) también se devuelve. Al parecer, MySQL interpreta ö como o.

¿Hay una manera sencilla de asegurarse de que location LIKE '%gotland%' no devuelve campos que contengan götland?

Aclamaciones.


5
2018-03-20 13:17


origen


Respuestas:


Creo que agregando COLLATE utf8_swedish_ci después de la LIKE Enunciado, obtendrás lo que quieras.

SELECT * FROM places WHERE name LIKE '%gotland%' COLLATE utf8_swedish_ci;

Alternativamente, es posible que desee utilizar latin1_swedish_ci Si latin1 es tu conjunto de caracteres.

No estoy 100% seguro de que esto corrija la comparación de caracteres en un LIKE declaración, pero lógicamente debería.

Fuentes:


8
2018-03-20 13:26