Колекция . Имате два избора, а не три:
utf8_bin третира всички тези като различни :demandé и demande и Demandé .
utf8_..._ci (обикновено utf8_general_ci или utf8_unicode_ci ) третира всички тези като едни и същи :demandé и demande и Demandé .
Ако искате само чувствителност към главни и малки букви (demandé =demande , но нито едно от тях не съответства на Demandé ), нямате късмет.
Ако искате само чувствителност на акцента (demandé =Demandé , но нито едно от тях не съответства на demande ), нямате късмет.
Декларация . Най-добрият начин да правите каквото изберете:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Не променяйте сортирането в движение . Това няма да използва индекса (тоест ще бъде бавно), ако съпоставянето е различно в name :
WHERE name = ... COLLATE ...
БИНАРНО . Типове данни BINARY , VARBINARY и BLOB са много подобни на CHAR , VARCHAR и TEXT с COLLATE ..._bin . Може би единствената разлика е, че текстът ще бъде проверен за валиден utf8 съхраняващ в VARCHAR ... COLLATE ..._bin , но няма да бъде проверено при съхранение в VARBINARY... . Сравнения (WHERE , ORDER BY и т.н.) ще бъде същото; тоест просто сравнявайте битовете, не правете сгъване на главни букви или премахване на акценти и т.н.