Um es auf die erste Art zu machen (beginnt Wort, in der Mitte des Wortes, endet Wort), versuchen Sie es so:
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
Für den zweiten Weg (Position des übereinstimmenden Strings) verwenden Sie die LOCATE Funktion
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Sie können auch einen Tie-Breaker wünschen, falls beispielsweise mehr als ein Wort mit hab beginnt . Dazu würde ich vorschlagen:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
Bei mehreren Wörtern beginnend mit hab , die Wörter, die mit hab beginnen werden gruppiert und alphabetisch sortiert.