sql >> Databáze >  >> RDS >> Mysql

Pořadí MySQL podle nejlepší shody

Chcete-li to udělat prvním způsobem (začíná slovo, uprostřed slova, končí slovo), zkuste něco takového:

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

Chcete-li to provést druhým způsobem (pozice shodného řetězce), použijte LOCATE funkce :

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

Můžete také chtít nerozhodný výsledek v případě, že například více než jedno slovo začíná hab . Chcete-li to provést, navrhuji:

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

V případě více slov začínajících hab , slova začínající hab budou seskupeny a seřazeny podle abecedy.



  1. Vložení více řádků do Oracle

  2. ORA-03113:konec souboru na komunikačním kanálu

  3. Práce na Postgres-XL 9.5

  4. MariaDB JSON_EXTRACT() Vysvětleno