Per farlo nel primo modo (inizia parola, nel mezzo della parola, finisce parola), prova qualcosa del genere:
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
Per farlo nel secondo modo (posizione della stringa abbinata), usa le LOCATE
funzione
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Potresti anche voler un pareggio nel caso, ad esempio, più di una parola inizi con hab
. Per farlo, suggerirei:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
Nel caso di più parole che iniziano con hab
, le parole che iniziano con hab
verranno raggruppati e ordinati in ordine alfabetico.