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

Consulta de pesquisa insensível de acento no MySQL


Você pode alterar o agrupamento em tempo de execução na consulta sql,
...where title like '%torun%' collate utf8_general_ci

mas cuidado que alterar o agrupamento em tempo de execução abre mão da possibilidade do mysql usar um índice, então o desempenho em tabelas grandes pode ser terrível.

Ou você pode copiar a coluna para outra coluna, como searchable_title , mas altere o agrupamento nele. Na verdade, é comum fazer esse tipo de coisa, onde você copia dados, mas os possui de uma forma ligeiramente diferente, otimizada para alguma carga de trabalho/finalidade específica. Você pode usar gatilhos como uma boa maneira de manter as colunas duplicadas em sincronia. Este método tem o potencial de ter um bom desempenho, se indexado.

Nota - Certifique-se de que seu db realmente tenha esses caracteres e não entidades html. Além disso, o conjunto de caracteres de sua conexão é importante. O acima assume que está definido como utf8, por exemplo, via set nomes como set names utf8

Caso contrário, você precisa de um introdutor para o valor literal
...where title like _utf8'%torun%' collate utf8_general_ci

e, claro, o valor entre aspas simples deve realmente ser codificado em utf8, mesmo que o restante da consulta sql não seja.