【MySQL】不允许你不会用正则表达式进行搜索(二)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【MySQL】不允许你不会用正则表达式进行搜索(二)

输入

SELECT prod_name FROM products 
  WHERE prod_name REGEXP '[1-5] Ton'
    ORDER BY prod_name;

输出

1df5a822a5c24ec4aa99ed90f73f0a67.png

分析

这里使用正则表达式[1-5] Ton。[1-5]定义了一个范围,这个表达式意思是匹配1到5,因此返回3个匹配行。由于5 ton匹配,所以返回.5 ton。

😇匹配特殊字符

正则表达式语言由具有特定含义的特殊字符构成。我们已经看到.[]、|和-等,还有其他一些字符。请问,如果你需要匹配这些字符,应该怎么办呢?例如,如果要找出包含.字符的值,怎样搜索?请看下面的例子:

输入

SELECT vend_name FROM vendors
  WHERE vend_name REGEXP '.'
    ORDER BY vend_name;

输出

9aef2247ea5640c1bd0f7d7fafb1a6f4.png

分析

🌼这并不是期望的输出,.匹配任意字符,因此每个行都被检索出来。

为了匹配特殊字符,必须用11为前导。1l-表示查找-, 表示查找.

输入

SELECT vend_name FROM vendors
  WHERE vend_name REGEXP '\\.'
    ORDER BY vend_name;

输出


0c95956569f843f6b054b52cc206793e.png

分析

这才是期望的输出。ll.匹配.,所以只检索出一行。这种处理就是所谓的转义 (escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义。这包括.、1、[]以及迄今为止使用过的其他特殊字符。

c55945de61444d859bf600e0f431e87f.png

😇匹配字符类

⭐存在找出你自己经常使用的数字、所有字母字符或所有数字字母字符等的匹配。为更方便工作,可以使用预定义的字符集,称为字符类character class)。表9-2列出字符类以及它们的含义。

字符类*

d7ff590aad6f40a2b0c325efd08ebd68.png

😇匹配多个实例

概要

🌕目前为止使用的所有正则表达式都试图匹配单次出现。如果存在一个匹配,该行被检索出来,如果不存在,检索不出任何行。但有时需要对匹配的数目进行更强的控制。例如,你可能需要寻找所有的数,不管数中包含多少数字,或者你可能想寻找一个单词并且还能够适应一个尾随的s(如果存在),等等。

重复元字符

7f5d8476d3c24fe4b8db054772a09efa.png

举例分析

下面举几个例子。

输入

SELECT prod_name FROM products
  WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
    ORDER BY prod_name;

输出

a7f338a6516745c2915fa7cf0b4635c9.png

分析

正则表达式1([0-9] sticks?\)需要解说一下。l1(匹配)[0-9]匹配任意数字(这个例子中为1和5),sticks?匹配stick和sticks (s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现),\)匹配)。没有?,匹配stick和sticks会非常困难。

😇定位符

目前为止的所有例子都是匹配一个串中任意位置的文本。为了匹配特定位置的文本,需要使用表列出的定位符

定位符表

4d6fe051674c4242b26affc2459df9ec.png

举例概述

🌠例如,如果你想找出以一个数 (包括以小数点开始的数) 开始的所有产品,怎么办?简单搜索0-9\.不行,因为它将在文本内任意位置查找匹配。解决办法是使用~定位符,如下所示

输入

SELECT prod_name FROM products
  WHERE prod_name REGEXP '^[0-9\\.]'
    ORDER BY prod_name;

匹配串的开始。因此,^ [0-91\.]只在或任意数字为串中第一个字符时才匹配它们。没有^,则还要多检索出4个别的行(那些中间有数字的行)。

🤣如何巩固学习

提示:在学习的过程中,我们需要先自行进行思考,而不是一遇到不会的就放弃思考直接看答案,如果最后遇到真的不会的题目,我们可以适当的进行观看答案,看自己的思路是否正确,在作出正确的判断

🤣本文小结

本文章介绍了正则表达式的基础知识,学习了如何在MySQL的SELECT语中通过REGEXP关键字使用它们。

好啦今日的分享到这里就结束啦,我是爱你们的M malloc希望可以帮助到你们噢,最后别忘记三连啦!!

7cbdf42b92004270a969feb4c42a58c7.png

1eb3d97d33b44ab691a9728de479cfb9.gif

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
关系型数据库 MySQL
MySQL 保姆级教程(七):用正则表达式进行搜索
MySQL 保姆级教程(七):用正则表达式进行搜索
|
7月前
|
SQL 关系型数据库 MySQL
MySQL通配符和正则表达式
MySQL通配符和正则表达式
81 1
|
7月前
|
关系型数据库 MySQL
9. Mysql 模糊查询和正则表达式
9. Mysql 模糊查询和正则表达式
187 1
|
7月前
|
关系型数据库 MySQL
MySQL中如何处理NULL值以及如何使用正则表达式
MySQL中如何处理NULL值以及如何使用正则表达式
|
7月前
|
Java 程序员
JavaSE——正则表达式(2/2):应用案例、查找信息、用于搜索替换、分割内容
JavaSE——正则表达式(2/2):应用案例、查找信息、用于搜索替换、分割内容
32 0
|
8月前
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
681 4
|
8月前
|
运维 Unix Linux
grep正则表达式搜索
grep正则表达式搜索
61 3
|
8月前
|
关系型数据库 MySQL
Mysql基础第二十一天,全文本搜索
Mysql基础第二十一天,全文本搜索
57 0
|
21天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
46 3
|
21天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
51 3