【业务功能篇07】Mysql 模糊查询

这篇具有很好参考价值的文章主要介绍了【业务功能篇07】Mysql 模糊查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

业务场景:我们对不同的业务逻辑进行数据处理时,多数是离不开需要模糊匹配的时候,比如要获取该表某个字段中,含有某个具体的字符内容,过滤出业务想要的数据。

 这里介绍有这么几种:

一、MySQL通配符模糊查询(%,_)

 通配符的分类

  • "%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次)。
  • "_" 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。当然,也可以like "陈____",数量不限。
  • like操作符:LIKE作用是指示mysql后面的搜索模式是利用通配符而不是直接相等匹配进行比较;但如果like后面没出现通配符,则在SQL执行优化时将 like 默认为 “=”执行

注意: 如果在使用like操作符时,后面没有使用通用匹配符(%或_),那么效果是和“=”一致的。在SQL执行优化时查询优化器将 like 默认为 “=”执行,SELECT * FROM movies WHERE movie_name like 'A';只能匹配movie_name=“A”的结果,而不能匹配像“AA”或“AB”这样的结果.
 

 

举例:

-- 模糊匹配含有“智能”字的数据

SELECT * from app where PROF like '%智能%';

-- 模糊匹配以“智能”字结尾的数据,  开头则是 '智能%'

SELECT * from app where PROF like '%智能';

-- 查询以“会”为结尾的,长度为三个字的数据,如:"生日会", 两个下划线

SELECT * from dF where a like '__会';

二、MySQL内置函数检索(locate,position,instr) 

话接上文,通过内置函数locate,position,instr进行匹配,相当于Java中的str.contains()方法,返回的是匹配内容在字符串中的位置,效率和可用性上都优于通配符匹配。

SELECT * from appF where INSTR(`app`, '%') > 0;
 
SELECT * from appF where LOCATE('%', `app`) > 0;
 
SELECT * from appF where POSITION( '%' IN `app`) > 0;

三个内置函数很类似,这里就介绍 instr

返回字符串str中第一次出现子字符串substr的位置。INSTR()与LOCATE()的双参数形式相同,只是参数的顺序相反。

实例:

-- 用INSTR关键字进行模糊匹配,功能跟like一样 ,等同于:"like '%智能%'"

SELECT * from app where INSTR(`PROF`, '智能');


 

三、MySQL基于regexp的正则匹配查询

REGEXP 不支持通配符"%、_",支持正则匹配规则

mysql 模糊搜索,Mysql&Mybatis高效语法,业务场景实例问题,mysql,数据库,java

-- REGEXP '智能' 等同于 like '%智能%'

SELECT * from app where appName REGEXP '智能';
-- 等同于
SELECT * from app where appName like '%智能%';

-- 支持 "|" ‘或’符号,匹配包含“中国”或“互联网”或“大学”的数据,支持叠加多个

SELECT * from app where appName REGEXP '中国|互联网|大学';

 更多技巧细节,参考:https://blog.csdn.net/qq_46940224/article/details/125031647文章来源地址https://www.toymoban.com/news/detail-737905.html

到了这里,关于【业务功能篇07】Mysql 模糊查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL使用全文检索实现模糊搜索

    创建全文检索有两种方式 方式一: 方法二: in boolean mode(布尔模式): 可以为检索的字符串增加操作符,且不会像自然语言一样自动拆词查询并集(除非手动空格隔开) 全文检索模糊查询使用全文索引来提高搜索效率,可以快速查询大数据量中的模糊匹配结果。而LIKE模糊查

    2024年02月15日
    浏览(39)
  • 个人学习记录——MySQL的模糊查询

    模糊查询实质上是用利用数据库SQL语言的模糊搜索,如‘like’,通配符‘%’,‘_’。 但我后来了解到还有‘[]’和\\\'[^]\\\'的用法,特此记录 1 “%” 表示0个或多个字符 Select * from 表名 where 列名 like \\\'%\\\' //查询出全部数据  Select * from 表名 where 列名 like \\\'x\\\' //完全匹配 Select * fro

    2024年02月09日
    浏览(28)
  • mysql 国密加密字段排序和模糊搜索

    双写 加密字段和明文分别存到两个字段中 , 查询只对明文进行操作 .  (备注: 这种只是应对检查或者设计的方式 , 对于程序没有实际意义) 使用函数 利用mysql已有加解密的函数 , 在排序和模糊搜索之前解密数据 , 再进行排序或者模糊搜索 . (备注: 查询速度受到很大影响 , 不能

    2024年02月05日
    浏览(31)
  • mysql 模糊查询like优化方案(亲测)

    本文的测试是基于 740w条 测试数据进行的,只讨论like模糊查询的优化方案。其他SQL优化可参考: SQL优化的几种方式 查询开头是“今天不开心”的聊天记录,是可以走索引的。 查询包含“今天不开心”的聊天记录,是不能走索引的。 咱们主要优化的是第二种情况,我本人测

    2023年04月08日
    浏览(80)
  • Mysql 字段模糊查询,在页面中输入%查询全部的问题处理

    一、背景   测试小妹闲着无聊,针对某一个查询项进行“ % ”测试,正常查询效果应该是返回空数据,但是却查出所有的数据。 二、解决方案 1、在使用mybatis的模糊查询时,有两个特殊符号需要注意: %(百分号):相当于任意多个字符; _(下划线):相当于任意的单个字符;

    2024年02月01日
    浏览(28)
  • 关于mysql数据库模糊查询的潜在问题

    初学者在学习的时候经常会写下面的模糊查询语句: 有两方面的问题,第一,我们从结果分析入手: 我们想看到的是什么,我们想看到的是蔡徐坤这个字符串能出现在我搜索的第一个位置,而不是我明明搜的蔡徐坤,蔡徐坤却出现在了最后面,前面一堆不太相干的。而之所

    2024年02月13日
    浏览(27)
  • 软件测试|MySQL LIKE:深入了解模糊查询

    简介 在数据库查询中,模糊查询是一种强大的技术,可以用来搜索与指定模式匹配的数据。MySQL数据库提供了一个灵活而强大的LIKE操作符,使得模糊查询变得简单和高效。本文将详细介绍MySQL中的LIKE操作符以及它的用法,并通过示例演示其功能。 基本语法 MySQL中的LIKE操作符

    2024年02月02日
    浏览(40)
  • Mysql 查询以逗号(,)分割的字符串,精确查找和模糊查询

    1、测试数据库表结构 2、测试数据 数据库有一个字段ancestors存储着部门父级id,每,用逗号分隔符隔开。比如:ancestors:“0,1,2,3,4,5,6,7,8,11,12,9,10,13\\\"”,我需要查询ancestors字段中包含“2”的信息 结果: 结果: 使用 FIND_IN_SET 函数能够准确查出 ancestors字段中含有 2 这项有哪些

    2024年02月11日
    浏览(32)
  • MySQL中如何高效的实现模糊查询(附30条优化建议)

    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要! 一般情况下like模糊查询的写法为(field已建立索

    2024年01月22日
    浏览(44)
  • mysql 的增删改查以及模糊查询、字符集语句的使用

    net  start mysql81 mysql -uroot -p show databases; show databases like \\\'%schema\\\'; create databases mydb; create databases if not exists mydb; show warnings; drop database mydb; drop database if not exists mydb; select database(); use mydb(); select database(); select version(); select user(); create database mydb2 character gbk collate gbk_chinese_ci show d

    2024年02月10日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包