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都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...
随机推荐
- Elasticsearch必知必会的干货知识二:ES索引操作技巧
该系列上一篇文章<Elasticsearch必知必会的干货知识一:ES索引文档的CRUD> 讲了如何进行index的增删改查,本篇则侧重讲解说明如何对index进行创建.更改.迁移.查询配 ...
- Window版本的Python安装库大全
1. 位置 python的pip安装包网站 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载方法 wget https://download.lfd.uci ...
- iOS 高效灵活地配置可复用视图组件的主题
本文首发于 Ficow Shen's Blog,原文地址: iOS 高效灵活地配置可复用视图组件的主题. 内容概览 前言 如何配置主题? 如何更高效地配置主题? 面向协议/接口的方案 ...
- PHP symlink() 函数
定义和用法 symlink() 函数创建一个从指定名称连接的现存目标文件开始的符号连接. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 symlink(target,link) ...
- JavaScript 你真的了解this指向吗
JavaScript 你真的了解this指向吗 前言 终于开始写this指向了,相信这对很多JavaScript的学习者来说是一个非常恐怖的环节,个人认为也算是JavaScript中最难理解的一个知识 ...
- Phantomjs实现后端生成图片文件
目录 PhantomJS简介 了解rasterize.js 使用方法 今天,给大家分享一个Java后端利用Phantomjs实现生成图片的功能,同学们使用的时候,可以参考下! PhantomJS简介 ...
- SQL优化之博客案例
问题背景:博客首页随着数据量的增加,最初是几百上千的数据,访问正常,这是开发环境,当切换测试环境(通过爬虫已有数据六万多),这时候访问非常缓慢,长达一分钟. 问题SQL: SELECT DISTINC ...
- 华为云GaussDB(DWS)内存知识点,你知道吗?
前言 在日常数据库的使用中,难免会遇到一些内存问题.此次博文主要向大家分享一些华为云数仓GaussDB(DWS)内存的基本框架以及基本视图的使用,以便遇到内存问题后可以有一个基本的判断. 注意,本篇博 ...
- SAFe必备——提高团队敏捷性
规模化敏捷之于项目群,就像Scrum之于敏捷团队.为了创建高质量业务解决方案,企业需要提高自身能力,提升团队和技术敏捷性,实现真正的规模化敏捷. 敏捷发布火车 实现团队和技术敏捷性,首先需要敏捷团队围 ...
- 001_HyperLedger Fabric环境安装
HyperLedger Fabric的环境,有解决三大问题 第一,是系统环境,这里我们选择的是centos7 第二,是开发环境,这里我们选择的是Go语言 第三,是运行环境,这里我们选择的是Docker ...