Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL — jak uzyskać trafne wyniki wyszukiwania

Możesz użyć funkcji ciągów, takich jak:

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;

Dzięki temu otrzymasz wszystkie wpisy zawierające @search. Najpierw te, które mają go na początku, potem te, które mają go po spacji, potem według pozycji wystąpienia, a następnie alfabetycznie.

name like concat(@search, '%') desc nawiasem mówiąc, używa logiki logicznej MySQL. 1 =prawda, 0 =fałsz, więc uporządkowanie malejąco daje najpierw prawdę.

Skrzypce 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. jak zarządzać połączeniami z dynamicznie tworzonymi bazami danych

  2. Powtórz ciąg wiele razy w MySQL – REPEAT()

  3. MySQL:Jak przeszukiwać wiele tabel w poszukiwaniu ciągu istniejącego w dowolnej kolumnie?

  4. Konwertuj to zapytanie na elokwentne

  5. Zresetuj hasło roota MySQL w systemie Windows