Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Pesquisa sensível a maiúsculas e minúsculas do MYSQL para o campo utf8_bin


Uma string no MySQL tem um conjunto de caracteres e um agrupamento . Utf8 é o conjunto de caracteres e utf8_bin é um de seus agrupamentos. Para comparar sua string literal com uma coluna utf8, converta-a em utf8 prefixando-a com a notação _charset:
_utf8 'Something'

Agora, um agrupamento só é válido para alguns conjuntos de caracteres. A distinção entre maiúsculas e minúsculas collation para utf8 parece ser utf8_bin, que você pode especificar como:
_utf8 'Something' collate utf8_bin

Com essas conversões, a consulta deve funcionar:
select * from page where pageTitle = _utf8 'Something' collate utf8_bin

O prefixo _charset funciona com literais de string. Para alterar o conjunto de caracteres de um campo, existe CONVERT... USING. Isso é útil quando você deseja converter o campo pageTitle em outro conjunto de caracteres, como em:
select * from page 
where convert(pageTitle using latin1) collate latin1_general_cs = 'Something'

Para ver o caractere e o agrupamento de uma coluna chamada 'col' em uma tabela chamada 'TAB', tente:
select distinct collation(col), charset(col) from TAB

Uma lista de todos os conjuntos de caracteres e agrupamentos pode ser encontrada com:
show character set
show collation

E todos os agrupamentos válidos para utf8 podem ser encontrados com:
show collation where charset = 'utf8'