Hoe's Notes

LIKE按照匹配度排序


需求:搜索到的数据与关键词较相符的尽可能排在前面(为模糊搜索做个简单的排序)

数据

SELECT
    id,name,gender
FROM
    users
WHERE
    "name" LIKE '李杰%'
LIMIT 100;

得到列表:

id name gender
1 李杰子 m
2 李杰 m
3 李杰彬 m
4 李杰 m
5 李杰斌 m
6 李杰忠 m
7 李杰 m

现在我们希望"李杰"排在更前面些,需要加上一个排序子句:

SELECT
    id,name,gender
FROM
    users
WHERE
    "name" LIKE '李杰%'
ORDER BY
    "length" ("name")
LIMIT 60;

这样得到的结果,"李杰"就会排在更前面:

id name gender
2 李杰 m
4 李杰 m
7 李杰 m
1 李杰子 m
3 李杰彬 m
5 李杰斌 m
6 李杰忠 m