Soubory . Máte dvě možnosti, ne tři:
utf8_bin
všechny tyto položky považuje za odlišné :demandé
a demandé
a Demandé
.
utf8_..._ci
(obvykle utf8_general_ci
nebo utf8_unicode_ci
) považuje všechny tyto položky za stejné :demandé
a demandé
a Demandé
.
Pokud chcete rozlišovat pouze malá a velká písmena (demandé
=demandé
, ale ani jeden neodpovídá Demandé
), máte smůlu.
Pokud chcete pouze citlivost na přízvuk (demandé
=Demandé
, ale ani jeden neodpovídá demande
), máte smůlu.
Prohlášení . Nejlepší způsob, jak dělat, co si vyberete:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Neměňte řazení za chodu . Pokud se řazení liší v name
, index se nepoužije (to znamená, že bude pomalý) :
WHERE name = ... COLLATE ...
BINÁRNÍ . datové typy BINARY
, VARBINARY
a BLOB
jsou velmi podobné CHAR
, VARCHAR
a TEXT
pomocí COLLATE ..._bin
. Snad jediný rozdíl je v tom, že text bude zkontrolován na platné utf8 uložené v VARCHAR ... COLLATE ..._bin
, ale nebude zkontrolován při ukládání do VARBINARY...
. Srovnání (WHERE
, ORDER BY
, atd.) bude stejný; to znamená, že jednoduše porovnejte bity, neprovádějte skládání pouzdra nebo oddělování zvýraznění atd.