utf8mb4_unicode_ci vs utf8mb4_bin

Also erst mal sehen, ob ich das richtig:

Ist ein Zeichensatz ist ein Satz von Symbolen und Codierungen. Eine Sortierung ist eine Reihe von Regeln für den Vergleich von Zeichen in einem Zeichensatz.

Sollte ich verwenden utf8mb4, weil mysql utf8 ist ein Betrug, bis-zu-3-bytes und nicht das wahre bis-zu-4-Byte-real utf8-Zeichensatz in PHP zum Beispiel.

Als solche, utf8mb4 ist ein charset und utf8mb4_unicode_ci/utf8mb4_bin sind 2 von seinen vielen verschiedenen Sortierungen verfügbar.

utf8_unicode_ci tun groß-und Kleinschreibung-Vergleich und andere spezielle Vergleiche ( ich habe es vermasselt mit allen die Akzente in Französisch zum Beispiel ) . utf8_bin ist case-sensitive, weil es vergleicht die binärwerte der Zeichen.

Jetzt die Fragen:

  1. Wenn ich zum Beispiel ermöglichen wollen, groß- /Kleinschreibung der Anmeldenamen mit utf8mb4_unicode_ci werde ich haben, Dinge zu tun wie:

    SELECT name FROM table WHERE BINARY name = 'MyNaMEiSFUlloFUPPERCases';
  2. Wenn ich zum Beispiel ermöglichen wollen, Case-insensitive Suche über utf8mb4_bin werde ich haben, Dinge zu tun wie:

    SELECT name FROM table WHERE LOWER(name) LIKE '%myname%'
  3. Also, welches ist besser ? Was über die schlechten Dinge, die ich höre, über utf8_unicode_ci und die Umlaute/Sonderzeichen ?

Danke 🙂

  • So haben die volle Kontrolle, ich denke, ich werde stick zu binären und dann custom Regex, wie schlimmer ist es leistungsmäßig ?
  • Wenn Sie möchten, case-folding, aber Akzent, bitte eine Anfrage an bugs.mysql.com .
InformationsquelleAutor shrimpdrake | 2016-05-21
Schreibe einen Kommentar