mysql实现模糊查询并按匹配程度排序

 更新时间:2023年08月31日 14:51:12   作者:zrllllll  
这篇文章主要介绍了mysql实现模糊查询并按匹配程度排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

mysql模糊查询并按匹配程度排序

写项目,写到模糊查询的时候想到了应该匹配度高的信息考前,于是我就在网找了找,果然找到了方法。

需要用到case表达式

格式:

CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
…
ELSE result END

案例

SELECT `课程号`,
sum(CASE 
	WHEN 成绩 >= 60	THEN
		1
	ELSE
		0
END 
)as 及格人数 ,
sum(case when 成绩 < 60 THEN 1 ELSE 0 END)as 不及格人数
from score GROUP BY 课程号

代码实现

select
               u.id,u.name,u.sex,u.portrait,u.resume
        from tb_user as u
        where
              u.name = #{userName} or u.name like concat('%',#{userName},'%')
        order by
        case
	        when u.name like concat('%',#{userName},'%') then length(REPLACE(u.name,#{userName},''))/length(u.name)
        end

结果:

但是有一个问题,如上图的案例,如果搜索的是莴苣1,那么就什么也搜不到了

mysql使用case when实现模糊查询搜索相似度达三个字以上

突然接到一个需求  说搜索要加一个条件 模糊查询的时候要搜索到的数据得是相似度达到三个字以上的结果

虽然sql不是很难  但是感觉确实需要记录一下

首先在impl实现层把传过来的字符串格式的搜索条件进行一个格式转换 转换成数组

然后在mybatis里面进行一个foreach循环遍历

sql如下:

在这里使用了mysql的CASE WHEN 关键字 当模糊查询搜索到的时候就赋个值为1没有搜索到则是0 以此相加 最后where条件里面加个判断 查询结果>=3的就ok了

这是这条sql的运行结果 一切ok

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySql判断汉字、日期、数字的具体函数

    MySql判断汉字、日期、数字的具体函数

    这篇文章主要大家详细介绍了MySql判断汉字、日期、数字的具体函数,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • MySQL8.0修改密码的正确姿势分享

    MySQL8.0修改密码的正确姿势分享

    如果当初设置了一个很复杂的数据库密码,是很可能忘记的,下面这篇文章主要给大家介绍了关于MySQL8.0修改密码的正确姿势,需要的朋友可以参考下
    2022-03-03
  • MySQL8.0实现窗口函数计算同比环比

    MySQL8.0实现窗口函数计算同比环比

    本文主要介绍了MySQL8.0实现窗口函数计算同比环比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL数据库如何导入导出(备份还原)

    MySQL数据库如何导入导出(备份还原)

    这篇文章主要介绍了MySQL数据库如何导入导出(备份还原),需要的朋友可以参考下
    2015-10-10
  • mysql数据库如何导入导出sql文件

    mysql数据库如何导入导出sql文件

    这篇文章主要介绍了mysql数据库如何导入导出sql文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 服务器不支持 MySql 数据库的解决方法

    服务器不支持 MySql 数据库的解决方法

    出现问题:报错“服务器不支持 MySql 数据库”,改函数function_exists('mysql_connect')返回 false
    2013-03-03
  • mysql分表和分区的区别浅析

    mysql分表和分区的区别浅析

    这篇文章主要介绍了mysql分表和分区的区别浅析,并对它们之间的相同做了分析,需要的朋友可以参考下
    2014-07-07
  • mysql实现if语句判断功能的6种使用形式小结

    mysql实现if语句判断功能的6种使用形式小结

    这篇文章主要给大家介绍了关于mysql实现if语句判断功能的6种使用形式,MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    这篇文章主要为大家详细介绍了macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • mysql如何在已有数据库上统一字符集

    mysql如何在已有数据库上统一字符集

    这篇文章主要介绍了mysql如何在已有数据库基础上换字符集,数据库里面,部分数据表和数据是latin1的,部分数据表和数据是UTF8,还有部分表,表结构是utf8而数据是latin1,下面说一下,怎么样字符集统一成utf8,需要的朋友可以参考下
    2019-06-06

最新评论