MySQL数据库基本操作-DQL-正则表达式

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: MySQL数据库基本操作-DQL-正则表达式

正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。


MySQL通过REGEXP关键字支持正则表达式进行字符串匹配。


image.png

image.png

-- ^ 在字符串开始处进行匹配
SELECT  'abc' REGEXP '^a';   -- 1
-- $ 在字符串末尾开始匹配
SELECT  'abc' REGEXP 'a$';  -- 0
SELECT  'abc' REGEXP 'c$';  -- 1
-- . 匹配任意字符
SELECT  'abc' REGEXP '.b'; -- 1
SELECT  'abc' REGEXP '.c'; -- 1
SELECT  'abc' REGEXP 'a.'; -- 1
-- [...] 匹配括号内的任意单个字符
SELECT  'abc' REGEXP '[xyz]'; -- 0
SELECT  'abc' REGEXP '[xaz]'; -- 1


返回值为1就代表匹配到了,如果返回值为0就代表不能匹配


-- [^...] 注意^符合只有在[]内才是取反的意思,在别的地方都是表示开始处匹配

SELECT  'a' REGEXP '[^abc]';-- 0

SELECT  'x' REGEXP '[^abc]';-- 1

SELECT  'abc' REGEXP '[^a]';-- 1

使用[^]则代表的是,不能匹配到,那么有些人肯定会疑问,为什么最后一个却匹配到了,虽然里面包含a,但是[^a]代表的是,除了a,里面还有其他的,也可以匹配成功,这里其实涉及到了一个单词中的全匹配和局部匹配。


负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'


-- a* 匹配0个或多个a,包括空字符串。 可以作为占位符使用.有没有指定字符都可以匹配到数据

SELECT 'stab' REGEXP '.ta*b';

SELECT 'stb' REGEXP '.ta*b';

SELECT '' REGEXP 'a*';

注意这里的*是0个或者多个,所以最后一个返回的是1


-- a+  匹配1个或者多个a,但是不包括空字符
SELECT 'stab' REGEXP '.ta+b';
SELECT 'stb' REGEXP '.ta+b';

注意这里的+是1个或者多个


-- a?  匹配0个或者1个a
SELECT 'stb' REGEXP '.ta?b';
SELECT 'stab' REGEXP '.ta?b';
SELECT 'staab' REGEXP '.ta?b';
-- a1|a2  匹配a1或者a2,
SELECT 'a' REGEXP 'a|b';
SELECT 'b' REGEXP 'a|b';
SELECT 'b' REGEXP '^(a|b)';

SELECT 'a' REGEXP '^(a|b)';

SELECT 'c' REGEXP '^(a|b)';

-- a{m} 匹配m个a

SELECT 'auuuuc' REGEXP 'au{4}c';

SELECT 'auuuuc' REGEXP 'au{3}c';

注意这里的?是0个或者1个,标准的名字叫做非贪婪模式


-- a{m,n} 匹配m到n个a,包含m和n
SELECT 'auuuuc' REGEXP 'au{3,5}c';
SELECT 'auuuuc' REGEXP 'au{4,5}c';
SELECT 'auuuuc' REGEXP 'au{5,10}c';
-- (abc) abc作为一个序列匹配,不用括号括起来都是用单个字符去匹配,如果要把多个字符作为一个整体去匹配就需要用到括号,所以括号适合上面的所有情况。
SELECT 'xababy' REGEXP 'x(abab)y';
SELECT 'xababy' REGEXP 'x(ab)*y';
SELECT 'xababy' REGEXP 'x(ab){1,2}y';

一般的实际应用场景,通过正则表达式可以对文本进行匹配,这比之前的like关键字要智能的多,应用场景也是比较的广,所以需要熟悉它的语法标准:

select 字段 regexp '正则表达式' as 命名 from 表   ……

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
10月前
|
SQL 关系型数据库 MySQL
菜鸟之路Day30一一MySQL之DML&DQL
本文介绍了MySQL中DML(数据操作语言)和DQL(数据查询语言)的核心用法。DML主要包括插入(insert)、更新(update)和删除(delete)语句,通过具体示例演示了如何对表数据进行增删改操作。DQL则聚焦于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询、排序查询和分页查询等内容。文章通过丰富的SQL语句实例,帮助读者掌握如何高效查询和操作数据库中的数据,适合初学者学习和实践。
333 12
|
SQL NoSQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(5)作者——LJS[含MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页等详解步骤及常见报错问题所对应的解决方法]
MySQL DQL基本查询:select;简单、排序、分组、聚合、分组、分页、INSERT INTO SELECT / FROM查询结合精例等详解步骤及常见报错问题所对应的解决方法
|
SQL 关系型数据库 MySQL
MySQL】-DQL(基本、条件、分组、排序、分页)详细版
通过这些查询方法,你可以高效地检索、分析和组织MySQL数据库中的数据,以满足各种应用需求。实践中,理解这些SQL语句的基础知识以及它们如何组合起来进行复杂的数据操作是至关重要的。
280 1
|
SQL Serverless 数据库
数据库常用DQL语言合集
数据库常用DQL语言合集
|
SQL 关系型数据库 数据库
|
关系型数据库 MySQL
MySQL 保姆级教程(七):用正则表达式进行搜索
MySQL 保姆级教程(七):用正则表达式进行搜索
|
SQL 关系型数据库 MySQL
MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)
MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)
307 1
|
SQL 缓存 关系型数据库
MySQL基础(三)----DQL详解
MySQL基础(三)----DQL详解
430 2
|
SQL 关系型数据库 MySQL
MySQL通配符和正则表达式
MySQL通配符和正则表达式
272 1