Koleksi . Anda memiliki dua pilihan, bukan tiga:
utf8_bin
memperlakukan semua ini sebagai berbeda :demandé
dan demandé
dan Demandé
.
utf8_..._ci
(biasanya utf8_general_ci
atau utf8_unicode_ci
) memperlakukan semua ini sebagai sama :demandé
dan demandé
dan Demandé
.
Jika Anda hanya menginginkan sensitivitas huruf besar-kecil (demandé
=demandé
, tetapi keduanya tidak cocok dengan Demandé
), Anda kurang beruntung.
Jika Anda hanya menginginkan sensitivitas aksen (demandé
=Demandé
, tetapi keduanya tidak cocok dengan demandé
), Anda kurang beruntung.
Deklarasi . Cara terbaik untuk melakukan apa pun yang Anda pilih:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Jangan mengubah susunan dengan cepat . Ini tidak akan menggunakan indeks (yaitu, akan lambat) jika susunannya berbeda di name
:
WHERE name = ... COLLATE ...
BINARY . tipe data BINARY
, VARBINARY
dan BLOB
sangat mirip dengan CHAR
, VARCHAR
, dan TEXT
dengan COLLATE ..._bin
. Mungkin satu-satunya perbedaan adalah bahwa teks akan diperiksa untuk penyimpanan utf8 yang valid dalam VARCHAR ... COLLATE ..._bin
, tetapi tidak akan diperiksa saat menyimpan ke VARBINARY...
. Perbandingan (WHERE
, ORDER BY
, dll) akan sama; yaitu, cukup bandingkan bitnya, jangan lakukan case folding atau aksen stripping, dll.