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

Query di ricerca insensibile all'accento in MySQL

Puoi modificare le regole di confronto in fase di esecuzione nella query sql,

...where title like '%torun%' collate utf8_general_ci

ma attenzione che la modifica al volo delle regole di confronto in fase di esecuzione rinuncia alla possibilità che MySQL utilizzi un indice, quindi le prestazioni su tavoli di grandi dimensioni potrebbero essere terribili.

Oppure puoi copiare la colonna in un'altra colonna, ad esempio searchable_title , ma cambia le regole di confronto. In realtà è comune fare questo tipo di cose, dove copi i dati ma li hai in una forma leggermente diversa che è ottimizzata per un carico di lavoro/scopo specifico. Puoi usare i trigger come un bel modo per mantenere sincronizzate le colonne duplicate. Questo metodo ha il potenziale per funzionare bene, se indicizzato.

Nota:assicurati che il tuo db abbia davvero quei caratteri e non entità html. Inoltre, il set di caratteri della tua connessione è importante. Quanto sopra presuppone che sia impostato su utf8, ad esempio, tramite set nomi come set names utf8

In caso contrario, è necessario un presentatore per il valore letterale

...where title like _utf8'%torun%' collate utf8_general_ci

e, naturalmente, il valore tra le virgolette singole deve essere effettivamente codificato utf8, anche se il resto della query sql non lo è.