Om het op de eerste manier te doen (begint woord, in het midden van het woord, eindigt woord), probeer zoiets als dit:
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
Om het op de tweede manier te doen (positie van de overeenkomende string), gebruik je de LOCATE
functie
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
U wilt misschien ook een tie-breaker voor het geval er bijvoorbeeld meer dan één woord begint met hab
. Om dat te doen, stel ik voor:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
In het geval van meerdere woorden die beginnen met hab
, de woorden die beginnen met hab
worden gegroepeerd en alfabetisch gesorteerd.