Оператор MySQL LIKE интерпретирует "o" и "ö" как одно и то же - PullRequest
5 голосов
/ 20 марта 2011

У меня есть приложение Rails 3, подключенное к базе данных MySQL.Используется кодировка utf-8.База данных связывает много данных на шведском языке и имеет функцию поиска.

Когда я ищу gotland (шведский остров), результаты также отображаются для Östergötland (графство).Очевидно, MySQL интерпретирует ö как o.

Есть ли простой способ убедиться, что location LIKE '%gotland%' не возвращает поля, содержащие götland?

Cheers.

1 Ответ

8 голосов
/ 20 марта 2011

Я считаю, что, добавив COLLATE utf8_swedish_ci после оператора LIKE, вы получите то, что хотите.

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

В качестве альтернативы, вы можете использовать latin1_swedish_ci, если latin1 является вашим набором символов.

Я не уверен на 100%, что это исправляет сравнение символов в операторе LIKE, но логически должно.

Источники:

...