Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL избира UTF-8 низ с '=', но не и с 'LIKE'

След като видях отговора на Маркъс Адамс, осъзнах, че функцията REPLACE може да бъде решението на този проблем, въпреки че той не спомена тази функция.

Тъй като имам само два различни комбиниращи знака (акут и тилда), комбинирани с други ASCII символи, например j с тилда, j с акут, m с тилда, s с тилда и т.н. Просто трябва да заменя тези два знака, когато използвам LIKE.

След като потърсих ръководството, научих за функцията UNHEX, която ми помогна да представя правилно комбинираните знаци самостоятелно в заявката, за да ги премахна.

Комбиниращият тилд е представен от CC83 в HEX код и акута е представен от CC81 в HEX.

И така, заявката, която решава моя проблем, е тази.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Премахване на връзки от публикации в wordpress с помощта на заявка

  2. Не може да се създаде приставка за съхранение за Mysql Apache Drill

  3. Какъв е най-добрият начин да изберете име на таблица динамично по време на изпълнение?

  4. codeigniter активен запис вложена заявка

  5. Въведете текстова стойност въз основа на стойността на опцията за избор, заредена динамично от sql db