Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL wählt UTF-8-String mit '=', aber nicht mit 'LIKE'

Nachdem ich die Antwort von Marcus Adams gesehen hatte, wurde mir klar, dass die REPLACE-Funktion die Lösung für dieses Problem sein könnte, obwohl er diese Funktion nicht erwähnt hat.

Da ich nur zwei verschiedene Kombinationszeichen (Akut und Tilde) habe, kombiniert mit anderen ASCII-Zeichen, zum Beispiel j mit Tilde, j mit Akut, m mit Tilde, s mit Tilde und so weiter. Ich muss nur diese beiden Zeichen ersetzen, wenn ich LIKE verwende.

Nachdem ich das Handbuch durchsucht hatte, erfuhr ich von der UNHEX-Funktion, die mir half, die Kombinationszeichen allein in der Abfrage zum Entfernen richtig darzustellen.

Die kombinierende Tilde wird durch CC83 dargestellt im HEX-Code und das Akut wird durch CC81 dargestellt in HEX.

Die Abfrage, die mein Problem löst, ist also diese.

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