我正在使用MySQL 5.5,因此无法使用FULLTEXT搜索,请不要建议它。
我的目的是,如果用户有5条记录,例如:
Amitesh
Ami
Amit
Abhi
Arun
如果有人搜索Ami,那么应该首先返回完全匹配的Ami,然后是Amit和Amitesh。
我正在使用MySQL 5.5,因此无法使用FULLTEXT搜索,请不要建议它。
我的目的是,如果用户有5条记录,例如:
Amitesh
Ami
Amit
Abhi
Arun
如果有人搜索Ami,那么应该首先返回完全匹配的Ami,然后是Amit和Amitesh。
你可以做:
select *
from table t
where col like '%Ami%'
order by (col = 'Ami') desc, length(col);
SELECT *
FROM table t
WHERE col LIKE '%Ami%'
ORDER BY INSTR(col,'Ami') asc, col asc;
ORDER BY INSTR(col, 'Ami') DESC, col ASC
。话虽如此,还是要感谢!这个方法在启用了 Doctrine 扩展的情况下在 Doctrine/Symfony 中运行得非常好,而所选答案由于 =
符号而出现错误。 - Erdal G.like
在order by
中找到。SELECT * FROM `table_name` WHERE col LIKE '%ami%' order by (col LIKE 'ami%') desc;