Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL seleziona la stringa UTF-8 con '=' ma non con 'LIKE'

Dopo aver visto la risposta di Marcus Adams mi sono reso conto che la funzione REPLACE potrebbe essere la soluzione a questo problema, anche se non ha menzionato questa funzione.

Poiché ho solo due diversi caratteri combinati (acuto e tilde), combinati con altri caratteri ASCII, ad esempio j con tilde, j con acuto, m con tilde, s con tilde e così via. Devo solo sostituire questi due caratteri quando uso LIKE.

Dopo aver cercato nel manuale, ho appreso della funzione UNHEX che mi ha aiutato a rappresentare correttamente i caratteri combinati da soli nella query per rimuoverli.

La tilde combinata è rappresentata da CC83 in codice HEX e l'acuto è rappresentato da CC81 in esadecimale.

Quindi, la query che risolve il mio problema è questa.

SELECT word, REPLACE(REPLACE(word, UNHEX("CC83"), ""), UNHEX("CC81"), "")
FROM oldword WHERE REPLACE(REPLACE(word, UNHEX("CC83"), ""), UNHEX("CC81"), "") 
LIKE 'hua%';`