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.