Samställningar . Du har två val, inte tre:
utf8_bin
behandlar alla dessa som olika :demandé
och demande
och Demandé
.
utf8_..._ci
(vanligtvis utf8_general_ci
eller utf8_unicode_ci
) behandlar alla dessa som samma :demandé
och demande
och Demandé
.
Om du bara vill ha skiftlägeskänslighet (demandé
=demande
, men ingendera matchar Demandé
), har du ingen tur.
Om du bara vill ha accentkänslighet (demandé
=Demandé
, men ingendera matchar demande
), har du ingen tur.
Deklaration . Det bästa sättet att göra vad du än väljer:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Ändra inte sortering i farten . Detta kommer inte att använda indexet (det vill säga kommer att vara långsamt) om sorteringen är annorlunda i name
:
WHERE name = ... COLLATE ...
BINÄR . datatyperna BINARY
, VARBINARY
och BLOB
är väldigt lika CHAR
, VARCHAR
och TEXT
med COLLATE ..._bin
. Den enda skillnaden är kanske att text kommer att kontrolleras för giltig utf8-lagring i en VARCHAR ... COLLATE ..._bin
, men det kommer inte att kontrolleras vid lagring i VARBINARY...
. Jämförelser (WHERE
, ORDER BY
, etc) kommer att vara samma; det vill säga, jämför helt enkelt bitarna, gör inte fodralvikning eller accentstrippning, etc.