Agrupamentos . Você tem duas opções, não três:
utf8_bin trata tudo isso como diferente :demandé e demande e Demandé . utf8_..._ci (normalmente utf8_general_ci ou utf8_unicode_ci ) trata tudo isso como mesmo :demandé e demande e Demandé . Se você deseja apenas diferenciar maiúsculas de minúsculas (
demandé =demande , mas nenhum corresponde a Demandé ), você está sem sorte. Se você deseja apenas sensibilidade ao acento (
demandé =Demandé , mas nenhum corresponde a demandé ), você está sem sorte. Declaração . A melhor maneira de fazer o que você escolher:
CREATE TABLE (
name VARCHAR(...) CHARACTER SET utf8 COLLATE utf8_... NOT NULL,
...
PRIMARY KEY(name)
)
Não altere o agrupamento imediatamente . Isso não usará o índice (ou seja, será lento) se o agrupamento for diferente em
name :WHERE name = ... COLLATE ...
BINÁRIO . Os tipos de dados
BINARY , VARBINARY e BLOB são muito parecidos com CHAR , VARCHAR e TEXT com COLLATE ..._bin . Talvez a única diferença seja que o texto será verificado para armazenar utf8 válido em um VARCHAR ... COLLATE ..._bin , mas não será verificado ao armazenar em VARBINARY... . Comparações (WHERE , ORDER BY , etc) será o mesmo; isto é, simplesmente compare os bits, não faça dobras de caixa ou destaque, etc.