För att göra det första sättet (börjar ordet, i mitten av ordet, avslutar ordet), prova något i stil med detta:
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 att göra det på andra sättet (positionen för den matchade strängen), använd LOCATE
funktion
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Du kanske också vill ha en tie-breaker om till exempel mer än ett ord börjar med hab
. För att göra det skulle jag föreslå:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
I fallet med flera ord som börjar med hab
, orden som börjar med hab
kommer att grupperas och sorteras i alfabetisk ordning.