Confrontazioni . Hai due scelte, non tre:
utf8_bin
li considera tutti come diversi :demandé
e demandé
e Demandé
.
utf8_..._ci
(tipicamente utf8_general_ci
o utf8_unicode_ci
) li considera tutti come uguali :demandé
e demandé
e Demandé
.
Se vuoi solo la distinzione tra maiuscole e minuscole (demandé
=demandé
, ma nessuno dei due corrisponde a Demandé
), sei sfortunato.
Se vuoi solo la sensibilità all'accento (demandé
=Demandé
, ma nessuno dei due corrisponde a demandé
), sei sfortunato.
Dichiarazione . Il modo migliore per fare qualunque cosa tu scelga:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Non modificare le regole di confronto al volo . Questo non utilizzerà l'indice (ovvero sarà lento) se le regole di confronto sono diverse in name
:
WHERE name = ... COLLATE ...
BINARIO . I tipi di dati BINARY
, VARBINARY
e BLOB
sono molto simili a CHAR
, VARCHAR
e TEXT
con COLLATE ..._bin
. Forse l'unica differenza è che il testo verrà controllato per la memorizzazione di utf8 valida in un VARCHAR ... COLLATE ..._bin
, ma non verrà verificato durante l'archiviazione in VARBINARY...
. Confronti (WHERE
, ORDER BY
, ecc) saranno gli stessi; vale a dire, confrontare semplicemente i bit, non piegare la custodia o togliere l'accento, ecc.