mysql采用like模糊匹配并根据匹配度的多少对结果排序
更新:2022-06-01 10:04:15
人气:74
来源:本站原创
A+
有这样一个需求,在mysql数据库进行模糊匹配一个数据表中的姓名在其它数据表中多个字段中进行匹配,效果是想实现根据匹配量的多少进行结果排序。
数据样子就是表名2中的数据列xingming和nicheng中可能会有表名1中的xingming,根据匹配量计算匹配分值:
<?php $sql_search="select id,xingming from 表名1 where id='mdaima.com' "; $result=$mysqli->query($sql_search); while ($rs=$result->fetch_assoc()){ $sql_search2="select xingming,nicheng from 表名2 where id='mdaima.com' and (xingming like '%".$rs["xingming"]."%' or nicheng like '%".$rs["xingming"]."%') order by ((xingming like '%".$rs["xingming"]."%') + (nicheng like '%".$rs["xingming"]."%') ) desc limit 1 "; $result2=$mysqli->query($sql_search2); if ($rs2=$result2->fetch_assoc()){ //处理的逻辑 $xingming=$rs2["xingming"]; //这个就是匹配次数最多的结果 } //李雷博客 www.mdaima.com } ?>
这里面最重要的是就是order by这一段PHP代码,可以相加排序,然后用desc是为了匹配度最高就是倒序排列,而limit 1是因为我只要一个最匹配的结果,如果用while循环就不要limit 1了。
order by ((xingming like '%".$rs["xingming"]."%') + (nicheng like '%".$rs["xingming"]."%') ) desc limit 1 ";
推荐的文章
Ads by Google
随手记
- ● JavaBridge.jar和Aspose.Cells安装及PHP将EXCEL导出PDF方法
- ● PHP批量删除所选内容的ID与参数加密冲突的解决方法【专用】
- ● JQ实现banner轮播图片的淡入淡出切换效果的代码
- ● PHP上传大文件二次确认对话框及loading显示防止假死状态【专用】
- ● DreamWeaver正则表达式将代码中的空白行删除
- ● mysql的慢查询日志记录什么
- ● js获取上传文件类型以及大小的方法
- ● windows系统如何查询openssl.cnf文件位置及更换路径
- ● SSL证书工具之CSR的作用是什么?
- ● [ssl:warn]SessionCacheisnotconfigured[hint:SSLSessionCache]原因
PHP经验分享