Du kan bruge strengfunktioner, såsom:
select id, name
from subjects
where name like concat('%', @search, '%')
order by
name like concat(@search, '%') desc,
ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
ifnull(nullif(instr(name, @search), 0), 99999),
name;
Dette giver dig alle poster, der indeholder @search. Først dem, der har det i begyndelsen, så dem, der har det efter et blanktegn, derefter efter forekomstens position, derefter alfabetisk.
name like concat(@search, '%') desc
bruger i øvrigt MySQL's booleske logik. 1 =sand, 0 =falsk, så du får sand først, hvis du bestiller dette faldende.
SQL violin:http://sqlfiddle.com/#!9/c6321a/1