For at gøre det på den første måde (starter ordet, midt i ordet, afslutter ordet), prøv noget som dette:
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
For at gøre det på den anden måde (positionen af den matchede streng), brug LOCATE
funktion
:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY LOCATE('searchstring', word)
Du vil måske også have en tie-breaker, hvis f.eks. mere end ét ord starter med hab
. For at gøre det vil jeg foreslå:
SELECT word
FROM words
WHERE word LIKE '%searchstring%'
ORDER BY <whatever>, word
I tilfælde af flere ord, der starter med hab
, ordene der starter med hab
vil blive grupperet sammen og sorteret alfabetisk.