Aby zrobić to w pierwszy sposób (rozpoczyna słowo, w środku słowa, kończy słowo), spróbuj czegoś takiego:
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
Aby zrobić to w drugi sposób (pozycja dopasowanego ciągu), użyj LOCATE
funkcja
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Możesz także chcieć rozstrzygnąć remisy na wypadek, gdyby na przykład więcej niż jedno słowo zaczynało się od hab
. Aby to zrobić, proponuję:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
W przypadku wielu słów zaczynających się od hab
, słowa zaczynające się od hab
zostaną zgrupowane i posortowane alfabetycznie.