Pour le faire de la première manière (commence le mot, au milieu du mot, termine le mot), essayez quelque chose comme ceci :
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
Pour le faire de la deuxième manière (position de la chaîne correspondante), utilisez les LOCATE
fonction
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Vous pouvez également vouloir un bris d'égalité au cas où, par exemple, plus d'un mot commence par hab
. Pour ce faire, je suggérerais :
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
Dans le cas de plusieurs mots commençant par hab
, les mots commençant par hab
seront regroupés et triés par ordre alphabétique.