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

PHP/MySQL:Маркирайте резултатите от заявката SOUNDS LIKE

Обърнете внимание, че SOUNDS LIKE не работи както си мислите. Не е еквивалентно на LIKE в MySQL, тъй като не поддържа % заместващ знак.

Това означава, че вашата заявка няма да намери "John David", когато търсите "John". Това може да е приемливо, ако това е само вашият резервен вариант, но не е идеален.

Ето едно различно предложение (което може да се нуждае от подобрение); първо използвайте PHPs soundex() функция за намиране на звука на ключовата дума, която търсите.

$soundex = soundex($word);
$soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
$sql = "SELECT lastname, firstname ".
    "FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
    "OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";

Сега ще имате списък с имена и фамилни имена, които имат смътно сходство в звученето (това може да са много записи и може да искате да увеличите дължината на префикса soundex, който използвате за вашето търсене). След това можете да изчислите разстоянието на Левенщайн между звука на всяка дума и вашата дума за търсене и да сортирате по това.

Второ, трябва да разгледате параметризираните заявки в MySQL, за да избегнете грешки при 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. MySQL след задействане за вмъкване получава автоматично увеличена стойност, актуализиране на стойността на полето след вмъкване дава неизвестна грешка в колоната

  2. Как да извлека mysql данни в низходящ ред?

  3. MySQL XDevAPI Как да върнете успешно състояние

  4. MySQL група по интервали в диапазон от време

  5. Актуализирайте заявката за актуализиране на редове в MySQL