MySQL基础知识——正则表达式(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL基础知识

正则表达式的作用


正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。


正则表达式的语法

SELECT column1, column2, ...   FROM table_name WHERE columnN REGEXP pattern;

正则表达式的关键字是REGEXP,后面接需要进行匹配的文本。


示例数据库

我们以customers表的数据为例:

1.jpg

                                                表customers

简单的字符匹配

查找地址中含有12的记录,可以使用如下SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '12'


结果为:

2.jpg

这和我们前面章节学的LIKE感觉没有多大区别,但是仔细看你会发现,如果直接把REGEXP换成LIKE是查找不到任何数据的,必须添加通配符'%'才可以实现相同功能。

这就是正则表达式REGEXP和LIKE的一个非常大的区别:REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现, REGEXP将会找到它,相应的行将被返回 。

我们再看下面一个例子


SELECT * FROM customers
WHERE 地址 REGEXP '12.'


结果为:

3.jpg

这里多了一个 .,它是正则表达式中的特殊字符。它表示匹配任意一个字符,类似LIKE里面的_


OR匹配

查找地址中包含12或者17的记录,可以使用如下SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '12|17'


结果为:

4.jpg

这里的 | 也是正则表达式中的特殊字符,表示或者的意思,类似OR语句。


匹配指定字符中的任意一个

查找地址中包含"京","城","道"中的任意一个,可以这样写SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '[京城道]'


结果为:

5.jpg

这里的 [] 也是正则表达式中的特殊字符,也是或者的意思。


匹配范围

当我们要匹配某个范围的的数据时,例如0123456789,可以简写成[0-9],这里的特殊字符 -,表示某个区间的值。查找地址中包含3-9的记录,可以这样写SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '[3-9]'


结果为

6.jpg

此外区间范围的不止有数值,字母也可以,例如[a-z],[A-Z]。

正则表达式内容较多,今天先介绍到这里,下一章我们再讲解剩余内容。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
存储 SQL 关系型数据库
MySQL基础知识
【6月更文挑战第13天】MySQL基础知识
48 7
|
3月前
|
关系型数据库 MySQL
MySQL 保姆级教程(七):用正则表达式进行搜索
MySQL 保姆级教程(七):用正则表达式进行搜索
|
4月前
|
关系型数据库 MySQL Linux
MySQL数据库基础知识
【6月更文挑战第20天】MySQL数据库基础知识。
60 3
|
4月前
|
SQL 关系型数据库 MySQL
MySQL通配符和正则表达式
MySQL通配符和正则表达式
44 1
|
4月前
|
关系型数据库 MySQL
9. Mysql 模糊查询和正则表达式
9. Mysql 模糊查询和正则表达式
108 1
|
4月前
|
关系型数据库 MySQL
MySQL中如何处理NULL值以及如何使用正则表达式
MySQL中如何处理NULL值以及如何使用正则表达式
|
5月前
|
关系型数据库 MySQL 数据库
MySQL数据表的基础知识
MySQL数据表的基础知识
34 0
|
5月前
|
关系型数据库 MySQL 数据库
MySQL基础知识
MySQL基础知识
52 0
|
4月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
48 2
|
4月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。