mysql like 模糊匹配,按照匹配度排序。

932 阅读1分钟

mysql like 模糊匹配,按照匹配度排序。

需求:需要查询用户表里面的用户名称,根据用户名称的相似度进行排序,总表数据 20万+ 方法一: $keyword = '简笔画'; LENGTH()

SELECT nick_name,id FROM show_user 
WHERE nick_name LIKE '%$keyword %' ORDER BY LENGTH($keyword )

时间: 0.0014s

在这里插入图片描述 tp5 里面无法使用->order(LENGTH()) ;网上也没有查找到数据资料。有知道的可以告知.

方法二:

SELECT nick_name,id,(length(nick_name)-length('简笔画')) as rn FROM 
show_user WHERE nick_name LIKE '%简笔画%' ORDER BY rn

在这里插入图片描述 方法三:

SELECT nick_name,id,LOCATE("简笔画",nick_name) as rn 
FROM show_user WHERE nick_name LIKE '%简笔画%' ORDER BY rn ASC

在这里插入图片描述 此时查询出来的数据无法100%完全匹配顺序, LOCATE() 是匹配文字的在字段的中的位置。 LOCATE(substr,str); 返回字符串substr中第一次出现子字符串的位置 str。