果然学习好是有道理的,学习Mysql与正则表达式笔记
正则表达式是用来匹配文本的特殊的字符集合,将一个正则表达式与文本串进行比较,Mysql中用where子句提供支持,正则表达式关键字:regexp
1、使用‘|’匹配两个串中的一个
2、使用‘[]’匹配几个字符中的一个
3、使用‘[^]’不匹配几个字符串中的任意一个,表示否定
4、对于特殊字符的匹配
需要在待匹配的特殊字符前面加上‘\\’进行转义。
5、Mysql支持的正则表达式字符集
正则表达式是用来匹配文本的特殊的字符集合,如果想从一个文本文件中提取电话号码,可以用正则表达式完成
作用:匹配文本,将一个正则表达式与一个文本串进行比较
格式:where子句中使用regexp 关键字,后面接正则表达式字符
与Like的区别:
where可以使用like (not like)和regexp (not regexp)来匹配特定的内容
1、like匹配整列数据
2、regexp 可以匹配列中任意位置的文本,更灵活更强大
完全匹配
select prod_name from products where prod_name regexp '1000';
等同于like语句
select prod_name from products where prod_name like '%1000%';
| 两个串中间的一个,效果等同于or or是完全匹配,不能模糊匹配
或者,不能放在like后面,放在regexp后面
select prod_name from products where prod_name regexp '1000|2000';
[] 匹配同个字符中的一个,与in相似,in是完全匹配
匹配1或2或3
select prod_name from products where prod_name regexp '[123] ton';
匹配包含12 ton数据
select prod_name from products where prod_name regexp '[123][123] ton';
[^ ] 不匹配几个字符中的任意一个
不匹配括号中任意一个字符的结果,除了123,其它都会被查询出来
select prod_name from products where prod_name regexp '[^123] ton';
[1-9]匹配一个范围1到9的数字
[a-z]包含a到z的任意一个字符
匹配1至5的任意数字 1 ton ,2 ton,3 ton,4 ton,5 ton
select prod_name from products where prod_name regexp '[1-5] ton';
\\对于特殊字符的匹配需要转义
匹配点.
select vend_name from vendors where vend_name regexp '\\.';
正则表达式字符集
[:alnum:]任意字母和数字[a-zA-Z0-9]
[:alpha:]任意字符[a-zA-Z]
[:upper:]任意大写字母[A-Z]
[:lower:]任意小写字母[a-z]
[:digit:]任意数字[0-9]
[:xdigit]任意十六进制字[a-fA-F0-9]
[:blank:]空格和制表[\\t]
[:space:]包括空格在内的任意空白字符[\\f\\n\\r\\t\\v]
[cntrl:] ascii控制字符0-37和127
[:graph:]与[:print:]相同,不包括空格
[:print:]任意可打印字符
[:punct:]排除[:alnum]和[:cntrl:]的任意字符
* 0或多个匹配 与Like后面的%相似
+ 1个或多个匹配{1,} 针对这个位置前面的字符匹配
? 0个或1个匹配 {0,1}
n 指定数目的匹配
{n,} 不少于指定数目的匹配 出现n次以上
{n,m} 匹配数目的范围,m不超过255 出现n次以上少于m次
^ 文本的开始
$ 文本的结尾
[[:<:]] 单词的开始[[:<:]] a app
[[:>:]] 单词的结尾
匹配连在一起的4位数字
select prod_name from products where prod_name regexp '[[:digit:]]{4}';
练习
查找prod_id包含anv的数据
select * from products where prod_id regexp 'anv';
如果需要区分大小写,binary关键字
select * from products where binary prod_id regexp 'ANV';
查找prod_id包含anv或者包含f的数据
select * from products where prod_id regexp 'anv|f';
包含3,c,e的数据
select * from products where prod_id regexp '[3ce]';
select * from products where prod_id regexp '[^3ce]'; 没有定位哪一个字符
查找f开头不包含3,c,e的数据
select * from products where prod_id regexp 'f[^3ce]';
查找prod_desc含有.开头的数据
select * from products where prod_desc regexp '^\\.';
前面是任意字符与数字,点后面有9或没有都可以被查找出来
select * from products where prod_price regexp '[[:alnum:]]\\.9*';
9后面出现一个或多个都能被查出来
select * from products where prod_price regexp '[[:alnum:]]\\.9+';
点后面出0个或1个都可以被查询出来
select * from products where prod_price regexp '[[:alnum:]]\\.9?';
?是针对.的限制,有没有.都可以被查出来
select * from products where prod_price regexp '[[:alnum:]]\\.?';
查找以k结尾的数据
select * from products where prod_price regexp 'k$';
查找d开头的数据
select * from products where prod_price regexp '^d';
查找单个d的数据
select * from products where prod_price regexp '^d$';
查找以d开头以d结尾的数据
select * from products where prod_price regexp '^d.*d$';
查找以p单词开头的数据
select * from products where prod_desc regexp '[[:<:]]'p;
查找以f结尾单词的数据
select * from products where prod_desc regexp 'f[[>:]]';
果然学习好是有道理的,学习Mysql与正则表达式笔记的更多相关文章
- IT人学习方法论(二):学习误区
之前我们讨论了“学什么”的问题,今天我们来谈一谈“怎么学”的问题.磨刀不误砍柴工,我们要提高学习效率,首先需要找到自己学习方法上的误区. 一些常见的学习方法误区 1)资料导向型 现在就停止阅读这篇文章 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习
http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...
- [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …
[Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...
- scrapy爬虫学习系列四:portia的学习入门
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- linux学习之centos(三):mysql数据库的安装和配置
前言:mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库, ...
- mysql学习【第4篇】:MySQL函数和编程
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...
- mysql学习【第2篇】:MySQL数据管理
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第2篇]:MySQL数据管理 外键管理 外键概念 如果公共关键字在一个关系中是主 ...
- Linux内核分析第一周学习博客 --- 通过反汇编方式学习计算机工作过程
Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...
随机推荐
- 【python爬虫】解决歌荒,下歌利器
python下载图片,mp3,想必很多人都早已耳闻,今天给大家来点不一样的, 让你下载高逼格高品质,带进度条,实时显示下载速度 详见源码:https://www.kesci.com/home/proj ...
- SpringBoot打包Docker镜像
构建spring boot项目 本地测试访问 打成jar包 在本地运行jar包测试 到这一步就证明jar包没问题 idea下载一个插件 在这创建一个Dockerfile文件 安装插件后会高亮显示. 在 ...
- [Objective-C] 001_Hello Objective-C
"Hello Word"从来都是经典中的经典!今天我们就来个"Hello Objective-C"吧. 启动Xcode(6.3.1),从File菜单中选择New ...
- [Wireshark]_002_玩转数据包
通过前一篇文章,我们大概了解了Wireshark,现在可以准备好进行数据包的捕获和分析了.这一片我们将讲到如何使用捕获文件,分析数据包以及时间格式显示等. 1.使用捕获文件 进行数据包分析时,其实很大 ...
- web selenium 小笔记
常用库导入 from selenium import webdriver #导入webdriver模块 from selenium.webdriver.common.by import By # XP ...
- cocos2dx 入门 环境配置
本人立志走游戏开发这条路,很早之前就准备学习cocos2dx,今天终于忙里偷闲入了一下门,把环境配置好了,创建了自己的第一个cocos项目! 一.环境配置 1.下载cocos https://coco ...
- Java实现 LeetCode 726 原子的数量(递归+HashMap处理)
726. 原子的数量 给定一个化学式formula(作为字符串),返回每种原子的数量. 原子总是以一个大写字母开始,接着跟随0个或任意个小写字母,表示原子的名字. 如果数量大于 1,原子后会跟着数字表 ...
- Java实现蓝桥杯 历届试题 k倍区间
历届试题 k倍区间 时间限制:2.0s 内存限制:256.0MB 问题描述 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j) ...
- Java实现 蓝桥杯VIP 算法训练 方格取数
问题描述 设有NN的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0. 某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点 ...
- Java实现偶数矩阵(Even Parity, UVa 11464)
偶数矩阵(Even Parity, UVa 11464) 问题描述 给你一个n×n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1, 使得每个元素的上.下.左.右的元素(如果存在的话)之和 ...