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

MySQL - Как да получите резултати от търсенето с точна релевантност

Можете да използвате низови функции, като например:

select id, name
from subjects
where name like concat('%', @search, '%')
order by 
  name like concat(@search, '%') desc,
  ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
  ifnull(nullif(instr(name, @search), 0), 99999),
  name;

Така получавате всички записи, съдържащи @search. Първо тези, които го имат в началото, след това тези, които го имат след празно място, след това по позицията на срещата, след това по азбучен ред.

name like concat(@search, '%') desc използва булева логика на MySQL между другото. 1 =вярно, 0 =невярно, така че подреждането на това низходящо първо ви дава истина.

SQL цигулка:http://sqlfiddle.com/#!9/c6321a/1



  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. VARCHAR срещу TEXT в MySQL

  3. PHP MySql неизвестен хост на сървъра

  4. MySQL NOW() функция с висока точност

  5. Не може да се открие нулева стойност от JSON_EXTRACT