Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So funktioniert MySQL in UTF-8 ohne Berücksichtigung der Groß- und Kleinschreibung und des Akzents

Sie haben bereits versucht, eine akzentunabhängige Sortierung für Ihre Suche und Bestellung zu verwenden.

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

Die Sache ist, Ihr NAME Spalte scheint im Zeichensatz latin1 (8-Bit) gespeichert zu sein. Das ist der Grund, warum mySQL Sie so anschimpft:

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

Wenn Sie es versuchen, erhalten Sie möglicherweise die gewünschten Ergebnisse

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

Aber seien Sie vorsichtig!

Wenn Sie irgendeine Funktion (in diesem Beispiel CONVERT) für die Spalte in einer WHERE-Anweisung verwenden, unterbinden Sie die Versuche von MySQL, Ihre Suche mit Indizes zu optimieren. Wenn dieses Projekt groß wird (das heißt, wenn Sie viele Zeilen in Ihren Tabellen haben), müssen Sie Ihre Daten im utf8-Format speichern, nicht im latin1-Format. (Wahrscheinlich wissen Sie bereits, dass Ihr LIKE '%whatever%' LIKE Suchbegriff verhindert auch die Indizierung von MySQL.)