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

MySQL seleciona a string UTF-8 com '=' mas não com 'LIKE'


Depois de ver a resposta de Marcus Adams, percebi que a função REPLACE poderia ser a solução para esse problema, embora ele não tenha mencionado essa função.

Como tenho apenas dois caracteres de combinação diferentes (agudo e til), combinados com outros caracteres ASCII, por exemplo, j com til, j com agudo, m com til, s com til e assim por diante. Eu só tenho que substituir esses dois caracteres ao usar LIKE.

Depois de pesquisar no manual, aprendi sobre a função UNHEX que me ajudou a representar adequadamente os caracteres combinados sozinhos na consulta para removê-los.

O til combinado é representado por CC83 em código HEX e o agudo é representado por CC81 em HEX.

Então, a consulta que resolve meu problema é essa.
SELECT word, REPLACE(REPLACE(word, UNHEX("CC83"), ""), UNHEX("CC81"), "")
FROM oldword WHERE REPLACE(REPLACE(word, UNHEX("CC83"), ""), UNHEX("CC81"), "") 
LIKE 'hua%';`