Se sei in grado di modificare il set di caratteri della tua colonna (o tabella), impostalo su utf8_general_ci
(link al manuale
):
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci;
Con questo set di caratteri (che non fa distinzione tra maiuscole e minuscole, come indicato da _ci
), i caratteri accentati hanno lo stesso peso (il valore utilizzato per confronto
), quindi restituiscono true se confrontati tra loro (link al manuale
):
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)
In alternativa, o se non è possibile modificare la configurazione del database in questo modo, è possibile scrivere una funzione per sostituire i caratteri accentati con i loro equivalenti non accentati (es. é
-> e
) e scrivilo in un campo di ricerca dedicato (a full- ricerca di testo
campo è consigliato). Eseguire ricerche in questo campo e restituire il campo accentato all'applicazione.