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

本文探讨了在大量用户数据中使用MySQL进行模糊查询的方法,包括利用LENGTH(), LOCATE()和自定义函数来提高查询效率及结果排序。通过对比不同方法,提供了在20万+数据量下获取高匹配度用户名的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值