2011-03-20 6 views
5

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.MySQL declaración LIKE interpreta "o" y "ö" como el mismo

Cuando busco gotland (una isla sueca) los resultados para Östergötland (una comarca) también se devuelven. Aparentemente, MySQL interpreta ö como o.

¿Hay una manera simple de asegurarse de que location LIKE '%gotland%' no devuelva los campos que contienen götland?

Saludos.

Respuesta

8

Creo que al agregar COLLATE utf8_swedish_ci después de la declaración LIKE, obtendrá lo que desea.

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

Alternativamente, es posible que desee utilizar latin1_swedish_cilatin1 si es el conjunto de caracteres.

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

Fuentes:

Cuestiones relacionadas