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

Wie kann man MySQL dazu bringen, Zeichenfolgen wie SQLite in Bezug auf Unicode und Sortierung zu verarbeiten?

MySQL möchte Strings konvertieren, wenn INSERT ausgeführt wird und SELECT . Die Konvertierung erfolgt zwischen dem, was Sie als Client deklarieren zu haben und was die Spalte wird als speichernd deklariert.

Das lässt sich nur mit VARBINARY vermeiden und BLOB statt VARCHAR und TEXT .

Die Verwendung von COLLATION utf8mb4_bin vermeidet nicht die Konvertierung zu/von CHARACTER SET utf8mb4; es sagt lediglich, dass WHERE und ORDER BY sollte die Bits vergleichen, anstatt sich mit Akzenten und Groß-/Kleinschreibung zu befassen.

Denken Sie daran, dass CHARACTER SET utf8mb4 ist eine Möglichkeit, Text zu kodieren; COLLATION utf8mb4_* sind Regeln zum Vergleichen von Texten in dieser Kodierung. _bin ist einfältig.

UNIQUE beinhaltet den Vergleich auf Gleichheit, daher COLLATION . In den meisten utf8mb4-Sortierungen werden die 3 (ohne Leerzeichen) gleich verglichen. utf8mb4_bin behandelt die 3 als unterschiedlich. utf8mb4_hungarian_ci behandelt one=One>öne.

Die abschließenden Leerzeichen werden durch den Datentyp der Spalte gesteuert (VARCHAR oder andere). Die neueste Version hat sogar eine Einstellung, ob nachgestellte Leerzeichen berücksichtigt werden sollen.