Sammlungen . Sie haben zwei Möglichkeiten, nicht drei:
utf8_bin
behandelt all diese als verschieden :demandé
und demande
und Demandé
.
utf8_..._ci
(normalerweise utf8_general_ci
oder utf8_unicode_ci
) behandelt alle diese als gleich :demandé
und demande
und Demandé
.
Wenn Sie nur die Groß-/Kleinschreibung beachten möchten (demandé
=demande
, aber keines von beiden entspricht Demandé
), hast du Pech.
Wenn Sie nur Akzentsensitivität wünschen (demandé
=demande
, aber keiner passt zu demande
), hast du Pech.
Erklärung . Der beste Weg, um das zu tun, was Sie auswählen:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Sortierung nicht spontan ändern . Dies wird den Index nicht verwenden (d. h. langsam sein), wenn die Sortierung in name
unterschiedlich ist :
WHERE name = ... COLLATE ...
BINÄR . Die Datentypen BINARY
, VARBINARY
und BLOB
sind sehr ähnlich wie CHAR
, VARCHAR
, und TEXT
mit COLLATE ..._bin
. Vielleicht besteht der einzige Unterschied darin, dass Text auf gültiges utf8-Speichern in einem VARCHAR ... COLLATE ..._bin
geprüft wird , wird aber beim Speichern in VARBINARY...
nicht überprüft . Vergleiche (WHERE
, ORDER BY
, usw.) sind gleich; das heißt, vergleiche einfach die Bits, mache kein Case-Folding oder Accent-Stripping usw.