Mysql
 sql >> Database >  >> RDS >> Mysql

Funzione di ricerca con caratteri greci in MySQL

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.