正则表达式(REGEXP)

1.简介

正则表达式是用来匹配列值的特殊字符集合,许多领域都有涉及,

MySQL使用的正则表达式仅为其一个小小的子集。

2.基本字符匹配

2.1筛选包含特定字符串的信息

//搜索id包含‘001’的所有学生信息
select * from Student
where id regexp '001';

注:regexp匹配列值字串,而like匹配整个列值,这是二者的重要区别。如:

//搜索id是‘001’的学生的信息
select * from Student
where id like '001';

2.2点符号

同通配符中的'_',用以代替一个字符,如:

//搜索id中含任意字符组合001的学生信息
select * from Student
where id regexp '.001';

注:不同于通配符_ ,正则表达式匹配子串,当‘.’放在开头时,仍能匹配到多个字符的字串。

如上列搜索中可以匹配到:1001,10001,100001,而‘_001’仅能匹配到1001;

3.or匹配(并)

通过符号‘|’可以实现or匹配,如:

//匹配出id为1001、1002、1003三位学生的所有信息
select * from Student
where id regexp '1001|1002|1003';

4.匹配几个字符之一

通过 [ ] 匹配几个字符中的一个,如:

[123]ABC  可以是:1ABC、2ABC、3ABC
[ABC]123 可以是:A123、B123、C123

注:

  1. [123] 其实是[1|2|3]的缩写,是一种特殊的or
  2. 时刻注意 [ ] 仅表示一个字符

5.范围匹配

在4的基础上可以有如下表示:

[0-9]  可以是0,1,2,3,... ,9中任意一个数字
[a-z] 可以是任意一个小写字母
[A-Z] 可以是任意一个大写字母
[0-9a-z] 可以是0到9任意一个数字,也可以是任意一个小写字母

注:

  1. 顺序不能反
  2. 时刻注意 [ ] 仅表示一个字符

6.转义匹配

  1. 如需匹配像 . | \ 等特殊字符,需要用双斜杠\\转义。

    前一个 \ 用来向MySQL解释,后一个用于向正则表达式解释。

  2. 如需引用元字符,也需使用\\,如:

  • \\f 换页
  • \\n 换行
  • \\r 回车
  • \\t 制表
  • \\v 纵向制表

7.匹配字符类

使用预定义的字符集:

[:alnum:]  任意字母和数字(同[a-zA-Z0-9])
[:alpha:]  任意字符(同[a-zA-Z])
[:blank:]  空格和制表(同[\t])
[:cntrl:]  ASCII控制字符(ASCII 0到31和127)
[:digit:]  任意数字(同[0-9])
[:graph:]  与[:print:]相同,但不包括空格
[:lower:]  任意小写字母(同[a-z])
[:print:]  任意可打印字符
[:punct:]  既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:]  包括空格在内的任意空白字符(同[\f\n\r\t\v])
[:upper:]  任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

8.匹配多个实例

*                      0个或多个匹配
+ 1个或多个匹配(等于 {1, })
? 0个或1个匹配(等于 {0, 1})
{n} 指定数目的匹配
{n, } 不少于指定数目的匹配
{n ,m} 匹配数目的范围(m不超过255)

9.定位符

^        文本的开始
$ 文本的末尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

注:使用 ^ 和 $ 可以使正则表达式等效Like操作符,如:

//此两者等价
select * from Student
where id regexp '^001$'; select * from Student
where id like '001';

MySQL学习之正则表达式篇的更多相关文章

  1. 数据库MySQL学习笔记高级篇

    数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...

  2. MySQL学习笔记Windows篇<一> Welcome to MySQL

    MySQL安装完毕后没有图形化操作界面,图形化管理界面需要另行安装,个人比较喜欢Navicat,界面更像SQLserver: 此篇学习笔记所有操作均使用命令行中完成: 1.开启/停止服务 使用MySQ ...

  3. mysql学习之基础篇01

    大概在一周前看了燕十八老师讲解的mysql数据库视频,也跟着学了一周,我就想把我这一周所学的知识跟大家分享一下:因为是第一次写博客,所以可能会写的很烂,请大家多多包涵.文章中有不对的地方还请大家指出来 ...

  4. MySQL学习【第一篇介绍】

    一.数据库mysql的特点 1.首先数据库分为RDBMS(关系型数据库),和NOSQL(非关系型数据库),而我们的mysql则是RDBMS. 2.RDMS和NOSQL特点对比 RDBMS特点: (1) ...

  5. MySQL学习【第二篇安装】

    一.Mysql安装方式 1.安装方式 1.rpm,yum安装 安装方便,安装速度快,但无法定制 2.二进制安装 不需要安装,解压即用,不能定制功能 3.编译安装 可定制,安装很慢,安装分为四个步骤 1 ...

  6. MySQL学习【第九篇存储引擎】

    一.存储引擎介绍 1.我们知道mysql程序构成由连接层,sql层,存储引擎层.存储引擎层和磁盘进行交互,由其去取数据,而我们取得数据是表的形式展现出来,谁做的呢?就是存储引擎结构化成表的形式返回给用 ...

  7. mysql学习之基础篇08 UTF8编码

    这次我们来说一下在Mysql中的编码问题: 我们知道应用于计算机的最早的字符集是ASCII,它所组成的编码是ASCII编码:由于对于其他国家来说它所容纳的字符个数比较少,后来就出现了ANSI字符集,它 ...

  8. mysql学习之基础篇05

    mysql中的统计函数: 1. 查询商品价格中最高的价格: select max(shop_price) from goods; 2. 查询商品价格中最低的价格: select min(shop_pr ...

  9. mysql学习之基础篇04

    五种基本子句查询 查询是mysql中最重要的一环,我们今天就来说一下select的五种子句中的where条件查询: 首先我们先建立一张商品表:goods 由于商品数目太多,我就不一一列举了. 在这里我 ...

随机推荐

  1. Xmind8 Pro破解版

    思维导图又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来,把主题关键词与图像. ...

  2. Github标星3K+,热榜第三,一网打尽数据科学速查表

    这几天,Github上的趋势榜一天一换. 这次一个名为 Data-Science--Cheat-Sheet 的项目突然蹿到了第三名. 仔细一看,确实干货满满.来,让文摘菌推荐一下~ 这个项目本质上是备 ...

  3. 「MoreThanJava」当大学选择了计算机之后应该知道的

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  4. Sql Server数据库性能优化之索引

    最近在做SQL Server数据库性能优化,因此复习下一索引.视图.存储过程等知识点.本篇为索引篇,知识整理来源于互联网. 索引加快检索表中数据的方法,它对数据表中一个或者多个列的值进行结构排序,是数 ...

  5. JAVA常见面试题问题简述(持续更新中)

    JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...

  6. 实验十一 MySQLl备份与恢复1

    实验十一 MySQL备份与恢复 一.  实验内容: 1. 使用SQL语句导入和导出表数据 2. 使用客户端工具备份还原数据库 3. 使用日志文件恢复数据库 二.  实验项目:学生成绩数据库 创建用于学 ...

  7. vulnhub~incllusiveness

    这个机子相对简单一点,但是也是从中发现了自己不少问题 技能一:  nmap 扫描发现了21,22 ,80三个端口,并且ftp服务允许匿名登录,在pub目录下面有writeable权限,这就好办了.我以 ...

  8. Aggressive cows(二分法)

    Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 28666 Accepted: 13146 Des ...

  9. Java 混淆器

    在脑海中假想一下,在你苦苦经历 81 难,摸爬滚打研制的技术轮子,终于成型得以问世,遂打个 JAR 包投放于万网之中.可是没过几天,同样功能的轮子出现在你的眼前,关键是核心代码都一样,此时你的内心是否 ...

  10. 微信小程序 使用include导入wxml文件注意的问题

    (1)使用inlucde的时,要注意将最后的终止符 / 添加上去,否则不能正常的导入界面内容 <include src="header.wxml"/> (2)引入文件注 ...