MySQL学习之正则表达式篇
正则表达式(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
注:
- [123] 其实是[1|2|3]的缩写,是一种特殊的or
- 时刻注意 [ ] 仅表示一个字符
5.范围匹配
在4的基础上可以有如下表示:
[0-9] 可以是0,1,2,3,... ,9中任意一个数字
[a-z] 可以是任意一个小写字母
[A-Z] 可以是任意一个大写字母
[0-9a-z] 可以是0到9任意一个数字,也可以是任意一个小写字母
注:
- 顺序不能反
- 时刻注意 [ ] 仅表示一个字符
6.转义匹配
如需匹配像 . | \ 等特殊字符,需要用双斜杠\\转义。
前一个 \ 用来向MySQL解释,后一个用于向正则表达式解释。如需引用元字符,也需使用\\,如:
- \\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学习之正则表达式篇的更多相关文章
- 数据库MySQL学习笔记高级篇
数据库MySQL学习笔记高级篇 写在前面 学习链接:数据库 MySQL 视频教程全集 1. mysql的架构介绍 mysql简介 概述 高级Mysql 完整的mysql优化需要很深的功底,大公司甚至有 ...
- MySQL学习笔记Windows篇<一> Welcome to MySQL
MySQL安装完毕后没有图形化操作界面,图形化管理界面需要另行安装,个人比较喜欢Navicat,界面更像SQLserver: 此篇学习笔记所有操作均使用命令行中完成: 1.开启/停止服务 使用MySQ ...
- mysql学习之基础篇01
大概在一周前看了燕十八老师讲解的mysql数据库视频,也跟着学了一周,我就想把我这一周所学的知识跟大家分享一下:因为是第一次写博客,所以可能会写的很烂,请大家多多包涵.文章中有不对的地方还请大家指出来 ...
- MySQL学习【第一篇介绍】
一.数据库mysql的特点 1.首先数据库分为RDBMS(关系型数据库),和NOSQL(非关系型数据库),而我们的mysql则是RDBMS. 2.RDMS和NOSQL特点对比 RDBMS特点: (1) ...
- MySQL学习【第二篇安装】
一.Mysql安装方式 1.安装方式 1.rpm,yum安装 安装方便,安装速度快,但无法定制 2.二进制安装 不需要安装,解压即用,不能定制功能 3.编译安装 可定制,安装很慢,安装分为四个步骤 1 ...
- MySQL学习【第九篇存储引擎】
一.存储引擎介绍 1.我们知道mysql程序构成由连接层,sql层,存储引擎层.存储引擎层和磁盘进行交互,由其去取数据,而我们取得数据是表的形式展现出来,谁做的呢?就是存储引擎结构化成表的形式返回给用 ...
- mysql学习之基础篇08 UTF8编码
这次我们来说一下在Mysql中的编码问题: 我们知道应用于计算机的最早的字符集是ASCII,它所组成的编码是ASCII编码:由于对于其他国家来说它所容纳的字符个数比较少,后来就出现了ANSI字符集,它 ...
- mysql学习之基础篇05
mysql中的统计函数: 1. 查询商品价格中最高的价格: select max(shop_price) from goods; 2. 查询商品价格中最低的价格: select min(shop_pr ...
- mysql学习之基础篇04
五种基本子句查询 查询是mysql中最重要的一环,我们今天就来说一下select的五种子句中的where条件查询: 首先我们先建立一张商品表:goods 由于商品数目太多,我就不一一列举了. 在这里我 ...
随机推荐
- w3cshool -- 排列组合去重算法挑战
function permAlone(str) { if(str.length == 1) return str; var a = str.substr(0, 1), one = [a], count ...
- SpringCloud微服务架构和SOA架构
1,传统的三层架构 在传统的架构中,SSH,SSM,主要分为web 控制层,业务逻辑层,数据库访问层,单点项目,项目没有拆分,所有的开发任务全部写在一个项目中,耦合度比价高,如果程序中的一个功能出现了 ...
- 将图片base64格式转换为file对象并读取(两种方式读取)
两种方式读取,一种URL.createObjectURL,另一种fileReader var base64 = ` data:image/jpeg;base64,/9j/4AAQSkZJRgABA ...
- mac 根目录下新建文件夹并赋予权限
在根目录中,你会发现你无法创建文件夹,即使使用命令也无法创建目录: 1.修改auto_master 编译 /etc/auto_master 文件,注释掉或者移除以 /home 开头的那一行,保存. 终 ...
- Kubernets中获取客户端真实IP总结
1. 导言 绝大多数业务场景都是需要知道客户端IP的 在k8s中运行的业务项目,如何获取到客户端真实IP? 本文总结了通行的2种方式 要答案的直接看方式一.方式二和总结 SEO 关键字 nginx i ...
- Mysql数据库的基本操作(1)
一.启动数据库 1. 我的电脑(此电脑)--->右键点击[管理]--->[服务和应用程序]--->[服务] 找到MySQL8.0可以选择手动启动或者自动启动. 2.可以直接通过命令行 ...
- linux压缩及归档
一.解析 压缩:把大文件,通过压缩成一个比之前小的文件. 归档(打包):把多个文件,归档成一个文件. 二.压缩 1.zip(归档压缩,可以压缩目录,要保存源文件) 压缩:zip 压缩后的文件名 压缩 ...
- 算法(algorithm)
算法是什么? 算法是指令的集合,是为解决特定问题而规定的一系列操作. 它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出. 一个算法通常来说具有以下五个特性: 1.输入:一个 ...
- 一款基于SVM算法的分布式法律助手
一. 项目简介 与 使用说明 体验网站(适配手机端): http://www.zhuchangwu.com 项目基于 Spring Cloud .Vue 构建,平台针对需要维权的用户而设计,主要提供如 ...
- SSM项目依赖,spring5.1.9
SSM项目依赖,spring5.1.9 简单的SSM项目,未加AOP等等操作 Spring三包bean core content Mybatis 五个mybatis mybatis-spring jd ...