一个常见的需求,在使用MySQL的条件下,分页显示+模糊查询
在这个情况下,排序变得十分关键
整理了一下一般情况下排序的原则:
模糊查询的关键字为“张三”为例
- 长度越短,排序越靠前,全匹配显示在最前面。比如:“张三” 就要在 “张三丰” 前面。
- 匹配的关键字,出现的越靠前,排序越靠前。比如:“我张三丰” 就要在 “我是张三” 前面。
最后实现的排序结果例子:
| 1 | 张三 |
| 2 | 张三丰 |
| 3 | 1张三 |
| 4 | 张三er |
| 5 | so张三 |
| 6 | 我是张三 |
| 7 | 张三我认识 |
| 8 | 我张三他爹 |
在MySQL中可以通过 char_length函数 和 locate函数 实现功能
代码如下:
1 select * from user where name like '%张三%' 2 order by char_length(name) asc, locate('张三',name) asc limit 5,5;
浙公网安备 33010602011771号