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

Kolejność MySQL według najlepszego dopasowania

Aby zrobić to w pierwszy sposób (rozpoczyna słowo, w środku słowa, kończy słowo), spróbuj czegoś takiego:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY
  CASE
    WHEN word LIKE 'searchstring%' THEN 1
    WHEN word LIKE '%searchstring' THEN 3
    ELSE 2
  END

Aby zrobić to w drugi sposób (pozycja dopasowanego ciągu), użyj LOCATE funkcja :

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)

Możesz także chcieć rozstrzygnąć remisy na wypadek, gdyby na przykład więcej niż jedno słowo zaczynało się od hab . Aby to zrobić, proponuję:

SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word

W przypadku wielu słów zaczynających się od hab , słowa zaczynające się od hab zostaną zgrupowane i posortowane alfabetycznie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połącz się ze zdalną bazą danych MySQL przez SSH za pomocą Javy

  2. Podział ciągu MySQL

  3. MySQL – NAJMNIEJSZE i NAJWIĘKSZE operatory porównania

  4. Jak uzyskać następny identyfikator automatycznego przyrostu w mysql

  5. Język zapytań Neo4j - Cypher