Если вы можете изменить набор символов вашего столбца (или таблицы), установите для него значение utf8_general_ci
( ссылка на руководство ):
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci;
С этим набором символов (который не учитывает регистр, как обозначено _ci
), акцентированные символы имеют одинаковый вес (значение, используемое для сопоставление ), поэтому они возвращают true при сравнении друг с другом ( ссылка на руководство ):
В сопоставлениях, не входящих в UCA, один на один
отображение из кода символа в вес.
В MySQL такие сопоставления случаются
нечувствительный и нечувствительный к акценту.
utf8_general_ci является примером: «а»,
«А», «А» и «А» имеют разные
коды символов, но все имеют вес
0x0041 и сравните как равное.
mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT 'a' = 'A', 'a' = 'À', 'a' = 'á';
+-----------+-----------+-----------+
| 'a' = 'A' | 'a' = 'À' | 'a' = 'á' |
+-----------+-----------+-----------+
| 1 | 1 | 1 |
+-----------+-----------+-----------+
1 row in set (0.06 sec)
В качестве альтернативы, или если вы не можете изменить конфигурацию базы данных таким образом, вы можете написать функцию для замены акцентированных символов их неакцентированными эквивалентами (т.е. é
-> e
) и записать это в выделенный поиск поле (рекомендуется полнотекстовый поиск поле). Выполните поиск в этом поле и верните акцентированное поле в приложение.