在mysql中使用Like进行一些简单轻量级的查询,并不需要考虑太多效率问题。

一、Like单字段查询比较简单。

没有特殊要求的话,直接使用%关键字%就进行左右匹配查询

.....

...

SELECT c.* FROM contacts c

WHERE c.delete_time IS NULL

AND c.name LIKE concat('%',#{keyWord},'%')}

ORDER BY c.create_time DESC

那如果我需要查询多个字段,比如一个输入框,既可以输入姓名也可以输入电话、手机进行查询,又该如何呢?

二、关于多字段查询,这里有两个方式可供参考:

1、对多个字段分别查询,使用OR连接,这种方式效率在数据量大时,效率很差

.....

...

SELECT c.* FROM contacts c

WHERE c.delete_time IS NULL

AND c.name LIKE concat('%',#{keyWord},'%')}

OR c.mobile LIKE concat('%',#{keyWord},'%')}

OR c.telphone LIKE concat('%',#{keyWord},'%')}

ORDER BY c.create_time DESC

2、使用concat将多个字段拼接之后在进行模糊查询,相比第一种更推荐第二种,执行效率更好

.....

...

SELECT c.* FROM contacts c

WHERE c.delete_time IS NULL

AND CONCAT(IFNULL(c.name,''),IFNULL(c.mobile,''),IFNULL(c.telephone,'')) LIKE concat('%',#{keyWord},'%')}

ORDER BY c.create_time DESC

特别提醒:由于CONCAT中只要有一个为NULL,则会返回NULL,这将导致你查不到正确数据。为了确保不为NULL,使用 IFNULL判断下就可以了

IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。

mysql的模糊查询在xml_在Mybatis xml使用mysql数据库进行多字段模糊查询(Like)相关推荐

  1. MyBatis从入门到精通(三):MyBatis XML方式的基本用法之多表查询

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 1. 多表查询 上篇博客中,我们示例的 ...

  2. mybatis mysql demo_SpringBoot(入门Demo,整合mybatis,连接mysql)

    1.简介 SpringBoot提供一种固定的.约定优于配置风格的框架,使开发者更快地创建基于spring的应用和程序.可以高效的创建基于Spring的应用服务(SpringBoot不是对spring功 ...

  3. 合格的MySQL管理员必备备份恢复与日志管理,对MySQL进行简单的操作

    目录 一,日志 一,日志保存 二,日志类型与作用 二,数据备份 一,数据备份的重要性 二,数据库备份的分类 1.从物理与逻辑的角度,备份可分为 2.数据库备份的分类 3.常见的备份方法 4.MySQL ...

  4. [转]对于非数据库字段的查询过滤以及app_query.append的用法

    在Form中在查询的记录不希望某些记录显示出来,例如不需要供应商A被显示出来,假设供应商A是数据库项,可以使用 set_block_property('block_name', DEFAULT_WHE ...

  5. mysql模糊查询xml_在userMapper.xml文件中模糊查询的常用的3种方法

    在userMapper.xml文件中新建映射sql的标签 select from users name like "%"#{name}"%" and phone ...

  6. MySQL 数据库 like 语句通配符模糊查询小结

    MySQL 报错:Parameter index out of range (1 > number of parameters, which is 0)--MySQL 数据库 like 语句通配 ...

  7. MySQL单表多字段模糊查询解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 在最近的一个项目需要实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段 例如现有table表 ...

  8. MySQL单表多字段模糊查询

    今天工作时遇到一个功能问题:就是输入关键字搜索的字段不只一个字段,比如 我输入: 超天才 ,需要检索出 包含这个关键字的 name . company.job等多个字段.在网上查询了一会就找到了答案. ...

  9. Mybatis基础学习之万能的Map和模糊查询

    前言: 小伙伴们,大家好,我是狂奔の蜗牛rz,当然你们可以叫我蜗牛君,我是一个学习Java半年多时间的小菜鸟,同时还有一个伟大的梦想,那就是有朝一日,成为一个优秀的Java架构师. 这个Mybatis ...

最新文章

  1. 日期处理工具类 -【二】
  2. c盘哪些文件可以删除
  3. SAP Spartacus B2B Org Unit树状结构的ghost数据
  4. Array Sharpening CodeForces - 1291B(思维)
  5. 在ASP.NET Core中编写合格的中间件
  6. Java摩托车汽车轮胎数量,摩托车轮子上的知识,你知道多少?
  7. 微信小程序实现日历功能(附加签到、迟到、未签的状态显示)
  8. ROS-MikroTik-RouterOS-培训认证各种证书
  9. 12_首页显示热门商品和最新商品
  10. 计算机刷bios版本,华硕主板怎么刷BIOS版本?华硕主板在线升级BIOS详细图文教程...
  11. Java 接口规范与最佳实践
  12. windows server 2008 r2集成USB3.0
  13. WINRAR5.0破解
  14. 联想笔记本热键与IDEA快捷键冲突问题
  15. 北京博物馆十大镇馆之宝
  16. PHP限制字符串显示长度
  17. 传说之下三重审判用计算机怎么弹,传说之下三重审判无限血
  18. YTU oj 3631 树的高度
  19. matlab绘制图形hold on_matlab中的hold on 怎么用
  20. css3运动框架,模拟现实物体运动的js动画库框架-Anima

热门文章

  1. 晦涩难懂的设计软件T恤大集合,看看你能明白几个
  2. 苹果乔布斯乔纳森时代彻底终结!
  3. 详解挣值管理(EVM)
  4. 北京大龄码农去顺丰送快递的真实体验
  5. 搭建Harbor最新版本步骤
  6. 微型计算机原理扬声器,微机原理复习-8254
  7. 过来人对于在校生找工作的一点看法
  8. android复杂计算器代码,android简单计算器代码
  9. 万年历-----日期计数器
  10. JavaScript高级程序设计(反刍) 11