MySQL必知必会》正则表达式
《MySQL必知必会》正则表达式
正则表达式
1.1、关键字 REGEXP
正则表达式的使用需要用到关键字 REGEXP 。
select prod_name
from products
where prod_name regexp '1000';
从效果看和关键字 LIKE 有相似之处。但只从这个例子中看不出差别,而且使用正则表达式还会降低性能。
但是如果用 LIKE 替换上面的句子,是查询不到数据的。
因为 LIKE 是匹配整个列内的全文本才会返回数据,要想做到和 REGEXP 一样的效果,要使用通配符或者拼接函数才行。
正则表达式是需要配合起来使用才能看到它的扩展性。
select prod_name
from products
where prod_name regexp '.000';
. 在正则表达式中表示任意一个字符。
以上例子使用的是数字匹配,要知道 MySQL 3.23.4+ 正则表达式匹配都是不区分大小写的。
1.2、OR 匹配 ‘ | ’
select prod_name
from products
where prod_name regexp 'ton|1000|2000';
使用 | 可以起到 or 的作用,要注意,不要有多余的空格,将会影响匹配。可以给出两个或两个以上的条件。
1.3、匹配几个字符之一
select prod_name
from products
where prod_name regexp '[125] ton';
用 [ ] 定义一组字符,以上的例子表示匹配 1 2 5 三个字符。注意 ton 前是有一个空格的。匹配的是 ‘1 ton' , '2 ton' ,'5 ton' 这三个字符串。
还有一种写法,是使用 |
select prod_name
from products
where prod_name regexp '[1|2|5] ton';
得到的结果是和上面的一样的。
但是要注意,下面这样写是得不到预期结果的。
select prod_name
from products
where prod_name regexp '1|2|5 ton';
因为上面写法告诉 MySQL ,将匹配 1 , 2 ,5 ton 单个字符串
此外,还可以使用 ^ 来匹配这些字符以外的列。
select prod_name
from products
where prod_name regexp '[^123]';
^ 当然也是不能匹配 NULL 值的列的。
1.4、匹配范围
select prod_name
from products
where prod_name regexp '[1-5] ton';
' - ' 表示范围,1-5,表示1、2、3、4、5 。
a-z 表示任意字母范围。
1.5、特殊字符
上面提到 . 表示任意一个字符,那么如果需要匹配 '.' 要怎么才能让MySQL知道不去转义它?
答案是 反斜杆 \ 。
select prod_name
from products
where prod_name regexp '\\.';
还可以引用元字符:
元字符 | 说明 |
---|---|
\\f | 换页 |
\\n | 换行 |
\\r | 回车 |
\\t | 制表 |
\\v | 纵向制表 |
匹配 \ 需要 \\\ 来表示。
1.6、匹配字符类
1.7、匹配多个实例
select prod_name
from products
where prod_name regexp '\\([1-5] sticks?\\)';
\\( :匹配 ( ;\\) :匹配 )
[1-5] : 匹配数字 1 -5 的范围;
sticks? :需要拆分为 stick 和 s? 来看待,stick :匹配全文
s? : 表示 ? 前面的 s 为匹配0或1个,即为可选。
重复元字符说明如下表:
结合上表匹配字符类的元字符,还可以
select prod_name
from products
where prod_name regexp '[[:digit:]]{4}';
[:digit:] :表示匹配任意数字 ,{4} : 表示出现四次。
当然还可以有其他写法,如下:
select prod_name
from products
where prod_name regexp '[0-9][0-9][0-9][0-9]';
1.8、定位符
定位元字符说明如下:
想找以任意数字作为开头的产品名:
select prod_name
from products
where prod_name regexp '^[1-9]';
想找以任意数字作为结尾的产品名:
select prod_name
from products
where prod_name regexp '[0-9]$';
注意 ^ 的两种用法
用在[ ] 内表示否定该集合,用在 [ ] 外表示文本的开始处。
MySQL必知必会》正则表达式的更多相关文章
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
- 《MySQL必知必会》整理
目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...
- mysql 必知必会总结
以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础. 200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随 ...
- MySql必知必会实战练习(三)数据过滤
在之前的博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,MySql必知必会实战练习(二)数据检索中介绍了所有的数据检索操作,下面对数据过滤操作进行总结. 1. whe ...
- 读《MySql必知必会》笔记
MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...
- MySql必知必会内容导图
<MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...
- MySQL必知必会1
MySQL必知必会 了解SQL 什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜. 什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的 ...
- 《MySQL必知必会》学习笔记——前言
前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...
随机推荐
- pandas之时间数据
1.时间戳Timestamp() 参数可以为各种形式的时间,Timestamp()会将其转换为时间. time1 = pd.Timestamp('2019/7/13') time2 = pd.Time ...
- springboot 基于JS-SDK实现微信分享(一)
本文主要介绍了SpringBoot 基于JS-SDK实现自定义微信分享,并通过本地测试的方式进行调试,文中通过微信实现分享流程及示例代码进行非常详细的介绍,希望本文对开发爱好者学习或者工作具有一定的参 ...
- Seaborn实现多变量分析
import seaborn as sns import numpy as np import pandas as pd import matplotlib.pyplot as plt sns.set ...
- 使用 MySQLi 和 PDO 向 MySQL 插入多条数据
PHP MySQL 插入多条数据 使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyG ...
- PHP jdtojulian() 函数
------------恢复内容开始------------ 实例 把儒略历法的日期转换为儒略日计数,然后再转换回儒略历法的日期: <?php$jd=juliantojd(6,20,2007); ...
- PHP ftp_size() 函数
定义和用法 ftp_size() 函数返回 FTP 服务器上指定文件的大小. 该函数以字节返回指定文件的大小,如果出错则返回 -1. 语法 ftp_size(ftp_connection,file) ...
- PHP stripcslashes() 函数
实例 删除 "World!" 前面的反斜杠: <?php高佣联盟 www.cgewang.comecho stripslashes("Hello World!&qu ...
- luogu P5633 最小度限制生成树 wqs二分
LINK:最小度限制生成树 还是WQS二分的模板题 不过相当于我WQS二分的复习题. 对于求出强制k个的答案 dp能做不过复杂度太高了. 世界上定义F(x)表示选出x个的答案 画成图像 其实形成了一个 ...
- jsp应用-实现用户登陆功能
项目结构 1.login.jsp 这个没什么好说的,把表单提交到校验页面进行校验 2.首先获取request域中user,password,然后进行校验,校验成功把信息存入session域,然后转发到 ...
- 你该知道的Docker-compose
Docker-compose介绍 前几篇文章和小伙伴们,分享了使用Dockerfile来构建镜像,使用docker run等命令来手动启动镜像.docker stop停止镜像.docker kill杀 ...