MYSQL中LIKE(模糊查询)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 通常我们在搜索的时候总是不会特别精准,例如在百度上搜索,主要搜索关键字,然后加载页面之后再挑选。所以,在数据库中,有时候会将查询条件不一定直接使用uuid这样的标准查询。实际业务中可能存在模糊查询的业务。所以,我们可以使用LIKE关键字模糊查询符合要求的结果集,模糊查询在实际业务中主要用于搜索关键字查询需要的信息。

@[TOC]

0 写在前面

通常我们在搜索的时候总是不会特别精准,例如在百度上搜索,主要搜索关键字,然后加载页面之后再挑选。

所以,在数据库中,有时候会将查询条件不一定直接使用uuid这样的标准查询。实际业务中可能存在模糊查询的业务。所以,我们可以使用LIKE关键字模糊查询符合要求的结果集,模糊查询在实际业务中主要用于搜索关键字查询需要的信息。

1 代码格式

这个有四种格式,以[NOT] WHERE 字段 LIKE '?'为模板,问号里面有百分号,%代表任意内容。

格式一:[NOT] where 字段 LIKE '%' :表示指代任意内容;

格式二:[NOT] where 字段 LIKE '%值1%' :包含值1,且值1前后都有内容;

格式三:[NOT] where 字段 LIKE '%值1' :表示以值1结尾的表达式;

格式四:[NOT] where 字段 LIKE '值1%' :表示以值1开头,且值1前面没内容,后面有内容。

2 SQL数据准备

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for personnel
-- ----------------------------
DROP TABLE IF EXISTS `personnel`;
CREATE TABLE `personnel`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of personnel
-- ----------------------------
INSERT INTO `personnel` VALUES (1, '刘成龙');
INSERT INTO `personnel` VALUES (2, '李虹朋');
INSERT INTO `personnel` VALUES (3, '王俊博');
INSERT INTO `personnel` VALUES (4, '王荣');
INSERT INTO `personnel` VALUES (5, '张艺月');
INSERT INTO `personnel` VALUES (6, '张腾宇');
INSERT INTO `personnel` VALUES (7, '柳彤');
INSERT INTO `personnel` VALUES (8, '李淑敏');
INSERT INTO `personnel` VALUES (9, '王海峰');
INSERT INTO `personnel` VALUES (10, '王搏');
INSERT INTO `personnel` VALUES (11, '于海峰');
INSERT INTO `personnel` VALUES (12, '姚杰');
INSERT INTO `personnel` VALUES (13, '于丽静');
INSERT INTO `personnel` VALUES (14, '杨信');
INSERT INTO `personnel` VALUES (15, '主兆瑞');
INSERT INTO `personnel` VALUES (16, '贺子注');
INSERT INTO `personnel` VALUES (17, '廖丽花');
INSERT INTO `personnel` VALUES (18, '韩菲');
INSERT INTO `personnel` VALUES (19, '郭文');
INSERT INTO `personnel` VALUES (20, '鞠传玲');

SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

3 举例

3.1格式一:[NOT] where 字段 LIKE '%' :表示指代任意内容;

sql:

SELECT
    * 
FROM
    personnel 
WHERE
    NAME LIKE '%';

在这里插入图片描述

3.2 格式四:[NOT] where 字段 LIKE '值1%' `:

表示以值1开头,且值1前面没内容,后面有内容。

例如查询所有“王姓”同学:

sql:

SELECT
    * 
FROM
    personnel 
WHERE
    NAME LIKE '王%';

在这里插入图片描述

剩下的两种格式,大家可以自行准备sql尝试。

4 写在末尾

注意的是实际业务中如非必要尽量避免使用模糊查询,如果必须要用,尽量选择最左匹配原则,因为这样可以使用到索引。

否则一旦数据量很大,没有用到索引的模糊查询性能可能会很差。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
SQL 存储 JSON
MySQL模糊查询二三事
### 1、源数据信息 源数据字段:Student表字段Names 存储内容为"111,222,333,444,555,666,777,888" ### 2、查询请求入参 ``` json { "Names": "666,888" } ``` ### 3、具体需求 需要拿到既包含666又包含888,直接模糊查询或者Contains之类的无法满足 ### 4、方法实现 ###### 方法一: // 纯SQL语句 ``` c# var nameSql = string.Empty; for (int i = 0; i < namesList.Count; i++) {
64 0
|
8月前
|
SQL 关系型数据库 MySQL
总结 vue3 的一些知识点:MySQL LIKE 子句
总结 vue3 的一些知识点:MySQL LIKE 子句
|
5月前
|
关系型数据库 MySQL 数据库
在 MySQL 中使用 LIKE
【8月更文挑战第12天】
462 1
|
2月前
|
搜索推荐 关系型数据库 MySQL
mysql like查询优化
通过合理的索引设计、使用全文索引、优化查询结构以及考虑分片和分区表,可以显著提高MySQL中 `LIKE`查询的性能。针对不同的应用场景选择合适的优化策略,能够有效地提升数据库查询效率,减少查询时间。希望这些方法和技巧能帮助您优化MySQL数据库中的模糊查询。
266 4
|
4月前
|
搜索推荐 关系型数据库 MySQL
MySQL 模糊查询新纪元:超越 LIKE+% 的高效探索
在数据库的日常操作中,模糊查询是一项不可或缺的功能,它允许我们根据不完全匹配的关键字来检索数据。传统上,MySQL 使用 LIKE 关键字配合 % 通配符来实现这一功能,虽然灵活但性能上往往不尽如人意,尤其是在处理大型数据集时。今天,我们将一起探索几种超越 LIKE+% 的模糊查询技术,以提升查询效率与用户体验。
417 2
|
6月前
|
SQL 关系型数据库 MySQL
MySQL模糊查询二三事
在实际应用中,根据需求和实际数据情况,选择合适的模糊查询方法并优化查询模式,是确保查询效率和准确性的关键。复杂的查询模式往往需要详细的测试和调优,以达到最佳的性能与响应时效。
219 4
|
6月前
|
关系型数据库 MySQL
mysql模糊查询指定根据第几个字符来匹配
mysql模糊查询指定根据第几个字符来匹配
239 1
|
7月前
|
关系型数据库 MySQL
9. Mysql 模糊查询和正则表达式
9. Mysql 模糊查询和正则表达式
182 1
|
7月前
|
关系型数据库 MySQL 数据库
Python中使用MySQL模糊查询的方法
(1)同样需要将your_username、your_password、your_database替换为我们的MySQL数据库的实际用户名、密码和数据库名。 (2)在mysql.connector.connect()中,我们没有直接指定字符集和游标类型,因为mysql-connector-python的默认配置通常已经足够好。但是,如果需要,我们可以添加这些配置选项。 (3)使用cursor.close()和cnx.close()来确保游标和连接都被正确关闭。 (4)mysql-connector-python也支持使用上下文管理器(即with语句)来自动管理游标和连接的关闭,但这需要创建一个
|
8月前
|
关系型数据库 MySQL
Mysql 查询以某个字符开头的语句和LIKE的使用
Mysql 查询以某个字符开头的语句和LIKE的使用
142 0