MySQL模糊查询详解

MySQL模糊查询详解

  • 一、什么是模糊查询
  • 二、MySQL中的模糊查询
      • 2.1 使用LIKE关键字
      • 2.2 使用正则表达式(REGEXP)
      • 2.3 使用BETWEEN AND
      • 2.4 使用IN操作符
      • 2.5 使用IS NULL操作符


💖The Begin💖点点关注,收藏不迷路💖

一、什么是模糊查询

模糊查询是指在数据库中进行的基于模糊条件的数据检索操作。通过模糊查询,我们可以根据模糊的关键字来查找包含该关键字的数据。在实际开发中,模糊查询常常用于处理一些需要模糊匹配的场景,比如搜索引擎、商品搜索等。

二、MySQL中的模糊查询

2.1 使用LIKE关键字

LIKE关键字是MySQL中用于模糊查询的常用关键字。它可以用来匹配包含指定模式的字符串。其基本语法如下:

SELECT * FROM table_name WHERE column_name LIKE 'pattern';

其中,table_name表示表名,column_name表示列名,pattern是要查找的模式。

在LIKE语句中,可以使用通配符来表示模糊匹配的规则,常用的通配符有:

%:表示任意字符,可以是0个、1个或多个字符。
_:表示单个字符。

示例:

SELECT * FROM users WHERE name LIKE 'J%';  -- 匹配以J开头的名字
SELECT * FROM users WHERE name LIKE '%son';  -- 匹配以son结尾的名字
SELECT * FROM users WHERE name LIKE '%mi%';  -- 匹配包含mi的名字
SELECT * FROM users WHERE name LIKE '_ohn';  -- 匹配以ohn结尾的四个字母名字

2.2 使用正则表达式(REGEXP)

MySQL还支持使用正则表达式进行模糊查询。正则表达式是一种用于匹配字符串的强大工具,可以根据特定的规则来匹配和查找符合条件的字符串。

在MySQL中,可以通过使用REGEXP关键字来进行正则表达式的模糊查询。其基本语法如下:

SELECT * FROM table_name WHERE column_name REGEXP 'pattern';

其中,table_name表示表名,column_name表示列名,pattern是要查找的正则表达式。

示例:

1、匹配指定字符集合中的任意字符,查找姓名中包含字符”a”或”o”的记录:

SELECT * FROM users WHERE name REGEXP '[ao]';

2、匹配指定字符集合之外的任意字符,其中,[^abc]表示匹配除了字符集合中的任意字符之外的字符:

SELECT * FROM users WHERE name REGEXP '[^abc]';

3、查询所有以字母"A"开头的用户名:

SELECT * FROM users WHERE name REGEXP '^A';

除了以特定字符开头,正则表达式还可以用于匹配其他模式,例如以特定字符结尾、包含特定字符等。

4、查询以字母"A"结尾的用户名:

SELECT * FROM users WHERE name REGEXP 'A$';

5、查询包含字母"A"的用户名:

SELECT * FROM users WHERE name REGEXP 'A';

6、查询以字母"A"开头且以字母"B"结尾的用户名:

SELECT * FROM users WHERE name REGEXP '^A.*B$';

7、匹配指定范围的字符,其中,[a-z]表示匹配任意小写字母:

SELECT * FROM users WHERE name REGEXP '[a-z]';

这些只是一些常用的MySQL正则表达式示例,更多需要去学习正则表达式。

2.3 使用BETWEEN AND

BETWEEN AND用于查询某个范围内的数据。

其基本语法如下:

SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;

其中,table_name是要查询的表名,column_name是要查询的列名,value1和value2是范围的起始值和结束值。

示例:

假设我们有一个名为products的表,其中有一个名为price的列,我们想要查询价格在100到200之间的产品。

使用BETWEEN AND操作符,可以这样查询:

SELECT * FROM products WHERE price BETWEEN 100 AND 200;

在上述示例中,price BETWEEN 100 AND 200表示价格在100到200之间的条件,包含(100 AND 200在内)。

注意事项

在使用BETWEEN AND操作符时,需要注意以下几点:

1、起始值和结束值可以是任意数据类型,但它们必须是可比较的。2、范围是包含边界值的,即起始值和结束值都会被包括在查询结果中。3、如果要查询不包含边界值的范围,可以使用`>``<`操作符。如:SELECT * FROM products WHERE price > 100 AND price < 200;4BETWEEN AND操作符也可以用于日期和时间类型的列。

2.4 使用IN操作符

IN操作符用于查询某个列中包含指定值的数据。其基本语法如下:

SELECT * FROM table_name WHERE column_name IN (value1, value2, ...);

其中,table_name是要查询的表名,column_name是要匹配的列名,value1, value2, …是要匹配的值。

如果不使用IN操作符来查询多个指定值的数据,可以使用OR操作符来实现相同的效果。以下是使用OR操作符改写的示例:

SELECT * FROM table_name WHERE column_name = value1 OR column_name = value2 OR column_name = value3;

在上述示例中,我们使用多个OR操作符来连接多个条件,每个条件都是对column_name进行等于比较。这样就可以查询到与指定值匹配的数据。

当需要查询的值较多时,使用IN操作符会更加简洁和方便。而使用多个OR操作符可能会导致查询语句变得冗长和难以维护。

因此,如果可能的话,建议使用IN操作符来查询多个指定值的数据。

注意事项

在使用IN操作符和模糊查询时,需要注意:

1、对于IN操作符,要确保要匹配的列和值的数据类型一致,否则可能会导致匹配失败。
2IN操作符适用于查询多个离散的值,而BETWEEN AND操作符适用于查询连续的范围值。

2.5 使用IS NULL操作符

IS NULL操作符用于查询空值(NULL)的数据。其基本语法如下:

SELECT * FROM table_name WHERE column_name IS NULL;

示例:

以下是一些关于IS NULL的示例:

1、查询某个列中为空值的数据:

SELECT * FROM table_name WHERE column_name IS NULL;

2、查询某个列中不为空值的数据:

SELECT * FROM table_name WHERE column_name IS NOT NULL;

注意事项:

在使用IS NULL进行查询时,需要注意以下几点:

1IS NULL只能用于查询空值(NULL),不能用于查询空字符串('')或者其他非空值。2、当某个列允许为空时,可以使用IS NULL来判断该列是否为空。3、如果某个列不允许为空,使用IS NULL来查询该列将不会返回任何结果。4、在使用IS NULL进行查询时,需要注意空值(NULL)的特殊性,确保查询条件的准确性。

💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 圣经 阅读 字符、布尔、单元类型

字符类型&#xff08;char&#xff09; Rust 的字符不仅仅是 ASCII &#xff0c;还包含所有的 Unicode 值&#xff0c;包括单个的中文、日文、表情符号等等。 Unicode 值的范围从 U0000 ~ UD7FF 和 UE000 ~ U10FFFF。 因为每个 Unicode 都是 4 个字节编码&#xff0c;所以字符…

【小白专用】c#之FileStream对象读写大文件

提及文件流&#xff0c;不得不先说以下几个类 FileStream&#xff0c;MemoryStream&#xff0c;NetWorkStream&#xff0c;StreamReader&#xff0c;StreamWriter&#xff0c;TextReader&#xff0c;TextWriter 在用这些类之前&#xff0c;我们先来了解一下这些类的用途以及区别…

知虾皮Shopee:东南亚最受欢迎的电子商务平台

在如今数字化时代&#xff0c;电子商务平台成为人们购物的首选方式。Shopee作为东南亚地区最受欢迎的电子商务平台&#xff0c;通过其多样化的商品、便捷的购物体验和创新的商业模式&#xff0c;迅速在该地区占据了重要地位。本文将详细介绍Shopee的特点和优势&#xff0c;以及…

设计模式 七大原则

1.单一职责原则 单一职责原则&#xff08;SRP&#xff1a;Single responsibility principle&#xff09;又称单一功能原则 核心&#xff1a;解耦和增强内聚性&#xff08;高内聚&#xff0c;低耦合&#xff09;。 描述&#xff1a; 类被修改的几率很大&#xff0c;因此应该专注…

CNN——VGG

1.VGG简介 论文下载地址&#xff1a;https://arxiv.org/pdf/1409.1556.pdf VGGNet 是由牛津大学视觉几何小组&#xff08;Visual Geometry Group, VGG&#xff09;提出的一种深层卷积网络结构&#xff0c;他们以 7.32% 的错误率赢得了 2014 年 ILSVRC 分类任务的亚军&#xff…

Prometheus 监控docker

查看docker运行状态 docker stats 启动docker cadvisor 直接运行docker docker run -d \--volume/:/rootfs:ro \--volume/var/run:/var/run:rw \--volume/sys:/sys:ro \--volume/var/lib/docker/:/var/lib/docker:ro \--publish8080:8080 \--namecadvisor \gcr.io/cadvisor…

2024年MySQL学习指南(二),探索MySQL数据库,掌握未来数据管理趋势

文章目录 前言4. DDL- 操作数据库4.1 查询4.2 创建数据库4.3 删除数据库4.4 使用数据库 5. DDL- 操作数据表5.1 数据类型5.2 查询表5.3 创建表5.4 删除表5.5 修改表 6. 实战案例详解 前言 接上一篇文章【2024年MySQL学习指南&#xff08;一&#xff09;】 4. DDL- 操作数据库 …

2023-2024 年广东省职业院校技能大赛高职组 “软件测试”赛项竞赛规程

2023-2024 年广东省职业院校技能大赛&#xff08;高职组&#xff09; “软件测试”赛项竞赛规程 一、赛项信息 赛项名称&#xff1a;软件测试 赛项编号&#xff1a;GZ034 赛项组别&#xff1a;高职组 二、竞赛目标 软件是新一代信息技术的灵魂&#xff0c;是数字经济发展的基础…

AWS ECS、EC2、EKS 和 Fargate 之间的关系

ECS (Elastic Container Service), EC2 (Elastic Compute Cloud), EKS (Elastic Kubernetes Service), 和 Fargate 是亚马逊 AWS 云平台上的服务&#xff0c;用于容器化应用程序的部署和管理。这些服务之间有一些关联&#xff0c;但它们在实现容器化工作负载的方式上有所不同。…

【docker】linux部署docker

简介 首先我需要声明的是&#xff0c;我的系统是centos7&#xff0c;下载工具使用的是yum&#xff1b;在linux上部署docker&#xff0c;之前一直看的是这篇文章Linux之Docker部署&#xff0c;基本上功能方面也都可以使用&#xff0c;部署起来也是比较的简单。首先我先讲述这篇…

LeetCode 每日一题 Day 32 ||递归单调栈

2487. 从链表中移除节点 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [5,2,13,3,8] 输出&#xff1a;[13,8] 解释&#xff1a;需要移除的节点是 5 &#xff0c;2 和 3 。…

大数据 - Doris系列《二》- Doris安装(亲测成功版)

目录 &#x1f436;2.1 安装前准备 &#x1f959;1.设置系统最大文件打开句柄数 >启动一个程序的时候&#xff0c;打开文件的数量就是句柄数 &#x1f959;3.时钟同步 &#x1f959;4.关闭交换分区&#xff08;swap&#xff09; &#x1f436;2.2 安装FE &#x1f436…

Prometheus监控redis

Redis 服务 启用 cat >docker-compose.yml<<EOF version: 3 services:redis:image: redis:5container_name: rediscommand: redis-server --requirepass 123456 --maxmemory 512mbrestart: alwaysvolumes:- /data/redis/data:/dataports:- 6379:6379 Redis_exporter…

python基础教程四(字符串相关常用方法)

字符串的方法特别多&#xff0c;这里只介绍一些最用用的。 1:count count方法和列表的count方法类似就是求某个值在字符串中出现了几次 例如: >>a"dsadsdsad" >>a.count() 22:center 方法center通过在俩边添加字符&#xff08;默认是空格&#xff09;让…

论文悦读(7)——NVM文件系统之Trio(SOSP‘23)文件系统

TRIO&#xff08;SOSP23&#xff09; 1. 背景&#xff08;Background&#xff09;1.1 NVM Technologis1.2 File System Customization1.3 Userspace NVM File Systems 2. 观察与动机&#xff08;Observation & Motivation&#xff09;3. 设计与实现&#xff08;Design &…

Linux: syscfg: network:inet_peer_threshold

inet_peer_threshold&#xff0c;默认值就是64K https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html 这个一般人应该用的非常少&#xff0c;因为个人电脑&#xff0c;很难说会达到这么多的peer量。 如果抛开&#xff0c;“INET peer storage”这个标题&#x…

JMeter 插件大全:详细介绍 Jmeter 常用插件

JMeter作为一个开源的接口性能测试工具&#xff0c;其本身的小巧和灵活性给了测试人员很大的帮助&#xff0c;但其本身作为一个开源工具&#xff0c;相比于一些商业工具&#xff08;比如 LoadRunner&#xff09;&#xff0c;在功能的全面性上就稍显不足。这篇博客&#xff0c;就…

傅里叶级数、傅里叶变换、小波变换、离散余弦变换的理解

目录 1. 傅里叶级数2.傅里叶变换 1. 傅里叶级数 功能&#xff1a;能把任意周期性函数展开成一系列正弦、余弦函数的和。 公式&#xff1a; f ( x ) a 0 2 ∑ n 1 ∞ ( a n cos ⁡ ( 2 π n x T ) b n sin ⁡ ( 2 π n x T ) ) 傅里叶系数 a n 2 T ∫ x 0 x 0 T f ( x )…

网络安全|2024年需要重点关注的10种DNS攻击类型

目前&#xff0c;针对域名系统&#xff08;DNS&#xff09;的攻击已经成为企业组织数字化发展中的一个严重问题&#xff0c;每年都有数千个网站成为此类攻击的受害者。据最近的研究数据显示&#xff0c;2023年企业组织与DNS攻击相关的损失同比增加了49%&#xff0c;这些损失不仅…

事务的起源:事务池和管理器的初始化

爱可生开源社区 2024 全新技术专栏《MySQL 核心模块揭秘》第一期。 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&…