База данных запросов для слова, содержащего французский акцент

у меня есть таблица в моей базе данных, похожая на эту

id  |  name     |  email
-----------------------------------------
1   |  elie     |  [email protected]
2   |  jénifer  |  [email protected]
3   |  jenny    |  [email protected]

как вы видите запись с ID = 2 имеет в названии французский символ. при запуске этого SQL

SELECT * FROM `TABLENAME` WHERE `name` LIKE '%jé%'

Я ожидаю увидеть только запись с ID = 2. Вместо этого я получаю ID = 2 & ID = 3. SQL заменяет французский символ «é» на «e».

Моя база данных, таблица и поля имеют Collation = utf8_general_ci

Что я должен сделать в этом случае, чтобы получить правильный результат, если мне нужно сохранить французские символы, сохраненные в моей базе данных?

0

Решение

Используйте для этого REGEXP

SELECT * FROM `TABLENAME` WHERE `name` REGEXP '.*é.*'

LIKE игнорирует диакритические знаки, а REGEXP — нет.

0

Другие решения

Я обнаружил, что его известная ошибка в MySQL 5.1

MySQL ошибка

[1 ноября 2010 8:52] Питер Лаурсен
Таким образом, вы можете создать таблицу, как это

CREATE TABLE test (
id INT AUTO_INCREMENT,
vers TEXT,
PRIMARY KEY (id)
) CHARACTER SET utf8 COLLATE utf8_danish_ci;

или это

CREATE TABLE `test` (
`id` INT (11) NOT NULL AUTO_INCREMENT,
`vers` TEXT CHARACTER SET utf8 COLLATE utf8_danish_ci,
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET = utf8;

или же

написать запросы с предложением (ями) COLLATE, как описано здесь:
http://dev.mysql.com/doc/refman/5.0/en/charset-collate.html

Обратите внимание, что оператор LIKE не поддерживает COLLATE. Он выполняется, но игнорируется.

SELECT 'a' LIKE 'å' COLLATE utf8_danish_ci; -- '0'

(то, что я думаю, я сообщу как ошибку самостоятельно или по крайней мере, запрос документа)

0

По вопросам рекламы [email protected]