Se você puder alterar o conjunto de caracteres de sua coluna (ou tabela), defina-o como
utf8_general_ci
(link para o manual
):ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci;
Com este conjunto de caracteres (que não diferencia maiúsculas de minúsculas, conforme indicado por
_ci
), os caracteres acentuados têm o mesmo peso (o valor usado para agrupamento
), então eles retornam true quando comparados entre si (link para o manual
):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)
Alternativamente, ou se você não puder alterar a configuração do banco de dados dessa maneira, você pode escrever uma função para substituir os caracteres acentuados por seus equivalentes não acentuados (ou seja,
é
-> e
) e escreva isso em um campo de pesquisa dedicado (um full- pesquisa de texto
campo é recomendado). Realize pesquisas neste campo e retorne o campo acentuado para o aplicativo.