Jeśli możesz zmienić zestaw znaków swojej kolumny (lub tabeli), ustaw go na utf8_general_ci
(link do instrukcji
):
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8_general_ci;
Z tym zestawem znaków (który nie uwzględnia wielkości liter, co oznacza _ci
), znaki akcentowane mają tę samą wagę (wartość używana dla zestawienie
), więc zwracają prawdę przy porównaniu ze sobą (link do instrukcji
):
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)
Alternatywnie, lub jeśli nie możesz zmienić konfiguracji bazy danych w ten sposób, możesz napisać funkcję zastępującą znaki akcentowane ich nieakcentowanymi odpowiednikami (np. é
-> e
) i zapisz to w dedykowanym polu wyszukiwania (pełny wyszukiwanie tekstowe
pole jest zalecane). Przeprowadź wyszukiwanie w tym polu i zwróć akcentowane pole do aplikacji.