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

Нечувствителна заявка за търсене в MySQL

Можете да промените съпоставянето по време на изпълнение в sql заявката,

...where title like '%torun%' collate utf8_general_ci

но внимавайте, че промяната на съпоставянето в движение по време на изпълнение се отказва от възможността mysql да използва индекс, така че производителността на големи таблици може да е ужасна.

Или можете да копирате колоната в друга колона, като например searchable_title , но променете съпоставянето върху него. Всъщност е обичайно да се правят този тип неща, при които копирате данни, но ги имате в някаква малко по-различна форма, която е оптимизирана за някакво конкретно натоварване/цел. Можете да използвате тригери като приятен начин да поддържате дублираните колони в синхрон. Този метод има потенциал да се представи добре, ако е индексиран.

Забележка - Уверете се, че вашият db наистина има тези знаци, а не html обекти. Също така наборът от знаци на вашата връзка има значение. Горното предполага, че е настроено на utf8, например чрез set имена като set names utf8

Ако не, имате нужда от въвеждащ за буквалната стойност

...where title like _utf8'%torun%' collate utf8_general_ci

и разбира се, стойността в единичните кавички трябва действително да бъде кодирана в utf8, дори ако останалата част от sql заявката не е.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да открия излишни редове в таблицата?

  2. MySQL - SELECT * INTO OUTFILE LOCAL ?

  3. Разбиране на използването на паметта на MySQL резултат в PHP (PDO)

  4. Контрол на версията на базата данни за MySQL

  5. mysql SQL:конкретен елемент да бъде първи и след това да сортирате останалите елементи