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

Como o MySQL trabalhar insensível a maiúsculas e minúsculas e insensível a acentos em UTF-8


Você já tentou usar um agrupamento sem acento para sua pesquisa e ordenação.

http://dev.mysql.com/doc /refman/5.0/en/charset-collation-implementations.html

O problema é que seu NAME coluna parece estar armazenada no conjunto de caracteres latin1 (8 bits). É por isso que o mySQL está resmungando com você assim:
  COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Você pode obter os resultados que deseja se tentar
 WHERE CONVERT(p.NAME USING utf8) LIKE _utf8 '%jose%' COLLATE utf8_general_ci;

Mas tenha cuidado!

Quando você usa qualquer tipo de função (neste exemplo, CONVERT) na coluna em uma instrução WHERE, você derrota as tentativas do MySQL de otimizar sua pesquisa com índices. Se este projeto for ficar grande (ou seja, se você tiver muitas linhas em suas tabelas), você precisará armazenar seus dados no formato utf8, não latino1. (Você provavelmente já sabe que seu LIKE '%whatever%' termo de pesquisa também derrota a indexação do MySQL.)