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

Come lavorare MySQL senza distinzione tra maiuscole e minuscole e senza accento in UTF-8

Hai già provato a utilizzare un confronto insensibile all'accento per la ricerca e l'ordine.

http://dev.mysql.com/doc /refman/5.0/en/charset-collation-implementations.html

Il fatto è che il tuo NAME la colonna sembra essere memorizzata nel set di caratteri latin1 (8 bit). Ecco perché MySQL si lamenta di te in questo modo:

  COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Potresti ottenere i risultati desiderati se provi

 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Ma attenzione!

Quando si utilizza qualsiasi tipo di funzione (in questo esempio, CONVERT) sulla colonna in un'istruzione WHERE, si vanificano i tentativi di MySQL di ottimizzare la ricerca con gli indici. Se questo progetto diventerà grande (ovvero, se avrai molte righe nelle tue tabelle) devi archiviare i tuoi dati in formato utf8, non latin1. (Probabilmente sai già che il tuo LIKE '%whatever%' il termine di ricerca sconfigge anche l'indicizzazione di MySQL.)