2017-05-25 23 views
-1

In MySQL 5.5, Suche Ergebnis Groß-und Kleinschreibung für deutsche Umlaute mit utf8_general_ci Kollatierung und utf8 Zeichensatz-Server.Ich habe 2 Werte in meinem Datenbanktabelle sagen Öder und Öder.Wenn ich eine Abfrage für die Suche nach den Zeichenfolgen mit dem Schlüsselwort "Öder" ausführen, wird nur Öder als Suchergebnis abgerufen und der Wert beginnend mit Ö dh 'örder' wird nicht abgerufen. Wenn ich die ändern character-set-server zu latin1 in my.cnf Datei von MySQL server und collation zu latin1_general_ci (Gleicher Zeichensatz und Kollation ändern zu latin1, was ich auch für die entsprechende Datenbank und Tabelle getan habe), es funktioniert gut, dh beide Werte werden als Suchergebnis abgerufen. Aber gibt es eine Möglichkeit, die Suche nach deutschen Umlauten nach Groß- und Kleinschreibung mit utf8 als Zeichensatzserver zu bewerkstelligen, um anderen Wörtern, die mit und beginnen, zu begegnen Andere deutsche Umlaute wie ü, Ü, ä, ä.Suchergebnis ist case sensitive für deutsche Umlaute mit utf8_general_ci Kollatierung und utf8 Zeichensatz-Server

+0

Keine Sortierung behandelt '' örder' = 'öder' - war das ein Tippfehler? Bitte klären Sie auch, ob Sie "Öder" mit "Oder" vergleichen möchten - das ist Akzent-Stripping, unabhängig von der Falzart. –

+0

Wenn ich mit Ö suche wird das Wort beginnend mit ö nicht abgerufen.Ich bin nicht besorgt ob als Auftrag abgeglichen wird oder nicht.Ich beschäftige mich nur mit Öder und örder. –

Antwort

0

die mysql Kommandozeilen-Tool verwenden Dinge zu testen:

mysql> SELECT 'Ö' = 'ö' COLLATE utf8_general_ci; 
+-------------------------------------+ 
| 'Ö' = 'ö' COLLATE utf8_general_ci | 
+-------------------------------------+ 
|         1 | 
+-------------------------------------+ 

1 bedeutet true; 0 bedeutet false.

Jede der utf8_..._ci Sortierungen behandelt eine Reihe von akzentuierten/nicht-akzentuierten Groß-/Kleinbuchstaben als gleich. Zum Beispiel sagt utf8mb4_german2_ci, dass diese gleich sind: O=o=º=Ò=Ó=Ô=Õ=ò=ó=ô=õ und vor oe=Ö=ö=Œ=œ sortieren.

Here ist ein Überblick über wo die meisten Buchstaben in den meisten utf8 Sortierungen stehen.

Für die meisten Anwendungen ist _general_ci nicht so gut wie _unicode_ci, was nicht so gut ist wie _unicode_520_ci, das in MySQL 8.0 durch einen Unicode 9.0-Standard ersetzt wird.

Ich denke german2 ist auf "Telefonbuch" Sortierung ausgerichtet. Aber vielleicht nicht. In 8.0, utf8mb4_german2_ci zusammenträgt D=d=Ď=ď < Dž=dz=dž < Ð=ð. Aber utf8mb4_de_pb_0900_ai_ci hat D=d=Ð=ð=Ď=ď < Dž=dz=dž. Mehr Details here.