sql >> Databáze >  >> RDS >> Mysql

MySQL vybírá řetězec UTF-8 s '=', ale ne s 'LIKE'

Poté, co jsem viděl odpověď Marcuse Adamse, jsem si uvědomil, že funkce REPLACE by mohla být řešením tohoto problému, ačkoli tuto funkci nezmínil.

Protože mám pouze dva různé kombinující znaky (acute a tilda), kombinované s jinými ASCII znaky, například j s vlnovkou, j s akutním, m s vlnovkou, s s vlnovkou a tak dále. Při použití LIKE musím tyto dva znaky nahradit.

Po prohledání manuálu jsem se dozvěděl o funkci UNHEX, která mi pomohla správně reprezentovat samotné kombinující znaky v dotazu a odstranit je.

Kombinující vlnovku představuje CC83 v HEX kódu a akutní je reprezentováno CC81 v HEX.

Takže dotaz, který řeší můj problém, je tento.

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


  1. SQLite CHECK omezení

  2. levenshtein alternativa

  3. Jednoduchý způsob, jak vypočítat medián pomocí MySQL

  4. MySQL s Entity Framework 6