È possibile modificare le regole di confronto in fase di esecuzione della query SQL,
...where title like '%torun%' collate utf8_general_ci
ma attenzione che cambiare le regole di confronto al volo in fase di esecuzione rinuncia alla possibilità di mysql utilizzando un indice, quindi le prestazioni su grandi tavoli può essere terribile.
Oppure, è possibile copiare la colonna in un'altra colonna, ad esempio searchable_title
, ma modificare le regole di confronto su di essa. In realtà è comune fare questo tipo di cose, in cui si copiano i dati, ma si hanno in una forma leggermente diversa che è ottimizzata per alcuni specifici carichi di lavoro/scopo. È possibile utilizzare i trigger come un buon modo per mantenere sincronizzate le colonne duplicate. Questo metodo ha il potenziale per funzionare bene, se indicizzato.
Nota: accertarsi che il proprio db abbia realmente quei caratteri e non entità html. Inoltre, il set di caratteri della tua connessione è importante. Quanto sopra si assume è impostato su utf8, per esempio, tramite set names come set names utf8
In caso contrario, è necessario un introducer per il valore letterale
...where title like _utf8'%torun%' collate utf8_general_ci
e, naturalmente, il valore nei singoli apici deve essere effettivamente utf8 codificato, anche se il resto della query sql non lo è.
http://stackoverflow.com/questions/2302813/normalizing-accented-characters-in-mysql-queries – Sun
@SunWKim L'ho provato prima ma non ha funzionato per me. – ocanal
@ocanal hai trovato una soluzione che puoi condividere con noi? – zvzej