sql >> Databasteknik >  >> RDS >> Mysql

MySQL välj UTF-8-sträng med '=' men inte med 'LIKE'

Efter att ha sett Marcus Adams svar insåg jag att REPLACE-funktionen kunde vara lösningen på detta problem, även om han inte nämnde den här funktionen.

Eftersom jag bara har två olika kombinationstecken (akut och tilde), kombinerade med andra ASCII-tecken, till exempel j med tilde, j med akut, m med tilde, s med tilde, och så vidare. Jag måste bara byta ut dessa två tecken när jag använder LIKE.

Efter att ha sökt i manualen lärde jag mig om UNHEX-funktionen som hjälpte mig att korrekt representera de kombinerade tecknen ensamma i frågan för att ta bort dem.

Den kombinerande tilden representeras av CC83 i HEX-kod och det akuta representeras av CC81 i HEX.

Så frågan som löser mitt problem är den här.

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


  1. Kolumnen finns inte?

  2. Hur kan jag trunkera en datetime i SQL Server?

  3. PhpStorm kan inte lösa kolumn för flera databasanslutningar

  4. SQL Hämta andra rader från aggregatfunktionen