果然学习好是有道理的,学习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程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...
随机推荐
- dede列表页限制标题长度
{dede:list pagesize ='10' titlelen="45"} <li><a href="[field:arcurl/]"& ...
- Nginx 实现 HTTPS(基于 Let's Encrypt 的免费证书)
SSL / TLS加密会为您的用户带来更高的搜索排名和更好的安全性. Let’s Encrypt 是一个认证机构(CA).它可以提供免费证书,并且已经被大多数浏览器所信任.另外,通过工具 Certbo ...
- Mybaties 的缓存
1.mybaties 默认会话是一级缓存,没有开启二级缓存.开启方式在mapper文件中设置<cache /> 2.<cache eviction="LRU" f ...
- Java-建立一个AnalysisResult类,对成绩进行分析
import java.io.*; import java.util.*; public class AnalysisResult { public static void main(String[] ...
- 新来的老大,剑走偏锋,干掉AOP做操作日志,实现后我们都惊呆了
前言 用户在操作我们系统的过程中,针对一些重要的业务数据进行增删改查的时候,我们希望记录一下用户的操作行为,以便发生问题时能及时的找到依据,这种日志就是业务系统的操作日志. 本篇我们来探讨下常见操作日 ...
- This的关键字的使用
this: 1.可以用来修饰属性 方法 构造器 2.this理解为当前对象或当前正在创建的对象. 3.可以在构造器中通过this()形参的方式显示的调用本类中其他重载的指定的构造器 要求: 在构造器 ...
- 以太坊智能合约开发框架Truffle
前言 部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果. 虽然现在IDE中已经存在了Solidity插件,可以编写 ...
- 关于使用npm成功安装命令后,执行时却报找不到命令的问题
# 使用npm安装newman命令 ~$ npm install newman --global ... /root/node-v6.9.1-linux-x64/bin/newman -> /r ...
- 居然还有人这样解说mybatis运行原理
目录 Mybatis基本认识 动态代理 JDK实现 CGLIB动态代理 总结 反射 Configuration对象作用 映射器结构 sqlsession执行流程(源码跟踪) Executor Stat ...
- Redis 单节点百万级别数据 读取 性能测试.
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 这里先进行造数据,向redis中写入五百万条数据,具体方式有如下三种: 方法一:(Lua 脚本) vim ...