果然学习好是有道理的,学习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之日志处理(logging模块一基础)
转载自:https://www.cnblogs.com/yyds/p/6901864.html 本节内容 日志相关概念 logging模块简介 使用logging提供的模块级别的函数记录日志 logg ...
- nodejs链接mysql 中的问题
首先你得对mysql ,有个大概的认识. 比如说:如何安装,使用基本的语法,测试安装是否能成功,以及成功之后简单的对于数据库的,操作(增删改查)... 下面是业务场景:在爬虫过程中,租后需要将信息输出 ...
- SPL常用迭代器
ArrayIterator 熟悉使用seek()跳过元素 熟悉使用asort,ksort排序 <?php $fruits = array( 'apple'=>'apple value', ...
- NO.2 TI开发环境的搭建 SDK+Code Composer Studio
首先我们要了解TI嵌入式开发环境 对于TI嵌入式开发,首先我们要下载SDK软件包,其次要准备编译环境Code Composer Studio. 对于SDK的下载,可以在官网浏览http://www.t ...
- mac下安装rabbitmq和php+rabbitq
一.首先使用brew安装rabbitmq brew install rabbitmq 安装完成,终端会出现如下内容,如图: 启动RabbitMQ 前台运行rabbitmq-server 后台运行bre ...
- 【图像处理】利用C++编写函数,绘制灰度图像直方图
1. 简介 利用OpenCV读取图像,转换为灰度图像,绘制该灰度图像直方图.点击直方图,控制台输出该灰度级像素个数. 2. 原理 (1) 实现原理较为简单,主要利用了OpenCV读取图像,并转换为灰度 ...
- 华为五大专家亲述:如何转型搞 AI?
导语:非AI专业技术人员转型AI技术,或是作为一名学生学习AI技术开发,对每个有这样诉求和经历的人来说,都希望能够看到AI技术人才的成长经历,给出自己的真实经历分享. 前言 参考塞缪尔.约翰逊(18世 ...
- 货车运输 noip2013 luogu P1967 (最大生成树+倍增LCA)
luogu题目传送门! 首先,题目让我们求每个货车的最大运输量,翻译一下就是求路径上边权最小的边. 利用一下贪心思想可知,所有货车肯定都会尽量往大的边走. 进一步翻译,即为有一些小边货车根本不会走,或 ...
- [PHP插件教程]001.Pear包管理器
PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写.它是一个PHP扩展及应用的一个代码仓库. 简单地说,PEAR之于PHP就 ...
- strlen 老瓶装新酒
前言 - strlen 概述 无意间扫到 glibc strlen.c 中代码, 久久不能忘怀. 在一无所知的编程生涯中又记起点点滴滴: 编程可不是儿戏 ❀, 有些难, 也有些不舍. 随轨迹一同重温, ...