开发者社区> 游客r426lz522voxi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介: 上一篇我们讲解了正则表达式的一些简单用法,今天我们再来学习一下它的几个特殊用法。
+关注继续查看

示例数据表

我们还是以表customers为例,这一次我们添加了一位外国朋友。

8.jpg

表customers


匹配特殊字符

正则表达式是由具有特定含义的特殊字符构成 ,我们已经用过 . 、[]、|、和-。如果我们需要匹配这些特殊字符该怎么办?例如我们想找出customers表中姓名里带 . 的客户信息,该怎么写?

如果按这种写法:

SELECT * FROM customers
WHERE `姓名` REGEXP '.'


结果为:

9.jpg

与我们实际想找的客户信息不一致,这个时候我们就需要使用到一个新的特殊字符:\\,我们称它为转义字符。

上面的需求我们就可以这样写:


SELECT * FROM customers
WHERE `姓名` REGEXP '\\.'


结果为:

10.jpg

结果与我们期望一致。


转义符不仅可以匹配我们需要的特殊字符,还可以元字符(具有特殊意义的字符)。

11.png


匹配字符类

正则表达式中还预定义了一些常用的字符集,这些我们成为字符类,可以方便我们直接使用。

12.png


匹配多实例

前面我们讲解的都是单词匹配,如果要匹配多次该如何处理?下面我们介绍一下重复元字符,即可以实现字符的多次匹配。

13.png

例如我们要查找邮编里以1开头,0重复了5次的用户信息,可以这样写SQL:


SELECT * FROM customers
WHERE `邮编` REGEXP '10{5}'


结果为:

14.jpg

这里的{5}就是会将它前面的0重复5次。


定位符

上面的内容都是匹配任务位置的内容,如果我们需要匹配特定位置的内容,需要使用到定位符

15.png

例如我们要找一个地址以"西"开头的用户,如果直接使用下面的SQL:


SELECT * FROM customers
WHERE `地址` REGEXP '西'

结果为:

16.jpg

虽然第二条记录中也有"西",但是并不是以"西"开头的,所以我们应该这样写才对:


SELECT * FROM customers
WHERE `地址` REGEXP '^西'


结果为:

17.jpg

其他的元字符就不一一举例了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
半小时搞会 CentOS 入门必备基础知识
这里记录一下我的学习过程,相当于自己记个笔记,同时分享出来,如果有同学刚好有需要而这个文章帮助到了你的话,在下也会十分开心。 文章最后推介了几个免费视频,B 站和慕课上的免费学习视频挺多,而且有些质量还是不错的。
54 0
MySQL基础知识——管理和连接
今天主要给大家讲解MySQL的简单管理与连接
31 0
数据库基础知识
数据库基础知识
116 0
网络基础知识
tcp/ip,三次握手四次挥手,http响应码
94 0
SQL中的动态SQL
在介绍动态SQL前我们先看看什么是静态SQL
95 0
569
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载