正则表达式是用来匹配文本的特殊的字符集合,将一个正则表达式与文本串进行比较,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与正则表达式笔记的更多相关文章

  1. IT人学习方法论(二):学习误区

    之前我们讨论了“学什么”的问题,今天我们来谈一谈“怎么学”的问题.磨刀不误砍柴工,我们要提高学习效率,首先需要找到自己学习方法上的误区. 一些常见的学习方法误区 1)资料导向型 现在就停止阅读这篇文章 ...

  2. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  3. Comprehensive learning path – Data Science in Python深入学习路径-使用python数据中学习

    http://blog.csdn.net/pipisorry/article/details/44245575 关于怎么学习python,并将python用于数据科学.数据分析.机器学习中的一篇非常好 ...

  4. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  5. scrapy爬虫学习系列四:portia的学习入门

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  6. linux学习之centos(三):mysql数据库的安装和配置

    前言:mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle.sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库, ...

  7. mysql学习【第4篇】:MySQL函数和编程

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第4篇]:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , ...

  8. mysql学习【第2篇】:MySQL数据管理

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习[第2篇]:MySQL数据管理 外键管理 外键概念 如果公共关键字在一个关系中是主 ...

  9. Linux内核分析第一周学习博客 --- 通过反汇编方式学习计算机工作过程

    Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...

随机推荐

  1. js 获取百度搜索关键词的代码

    有可能有时候我们会用到在百度搜什么关键词进来我们的网站的,所有我们又想拿到用户搜索的关键词. 这是我研究了半天所得出的办法.话不多说直接贴代码 <script> function quer ...

  2. 工作中遇到的SQL

    1.根据a表中的字段col,修改b表中的col UPDATE a INNER JOIN b ON a.id = b.id SET b.col = xx WHERE a.col = xx 2.模糊查询 ...

  3. MySQL复制表结构以及复制表等等

    mysql中用命令行复制表结构的方法主要有一下几种: 1.只复制表结构到新表 1 CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2; 或 1 CREATE TABL ...

  4. Python的大小整数池跟深浅copy

    一.小整数池 可变的数据类型:list dict set 可变: 就是里面的数据类型变了,但是指向的内存地址没变. 不可变的数据类型:str 数值类型 tuple 不可变:如果改变了里面的值,相应的只 ...

  5. 人机协同与AI能力训练

    我们进行<中台战略>一书的第三期分享. “人机融合是解决aI机器人冷启动的绝佳解决方案,我们这里引入了一个应答满意度的指标,每一个咨询应答都对应一个应答满意度.当消费者应该回答选择转入人工 ...

  6. ArrayList及List的常用方法

    ArrayList package com.aff.coll; import java.util.ArrayList; import java.util.List; import org.junit. ...

  7. 郭盛华:DNS新漏洞可使黑客可以发起大规模DDoS攻击

    近日,知名网络黑客安全专家.东方联盟创始人郭盛华微博披露了有关影响DNS协议的新缺陷的详细信息,该缺陷可被利用来发起放大的大规模分布式拒绝服务(DDoS)攻击,以击倒目标网站.该漏洞称为NXNSAtt ...

  8. STM32读取匿名光流数据——与Guidance的光流和超声波做对比测试

    使用两个串口同时读取匿名光流和Guidance数据:用以比较两个光流的效果 Github链接:https://github.com/W-yt/YuTian_Pro/tree/master/Guidan ...

  9. 安装和换源pip

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能 一.ubuntu安装和配置pip 1.进入终端,输入命令sudo su root ,输入密码后进入r ...

  10. ClickHouse源码笔记1:聚合函数的实现

    由于工作的需求,后续笔者工作需要和开源的OLAP数据库ClickHouse打交道.ClickHouse是Yandex在2016年6月15日开源了一个分析型数据库,以强悍的单机处理能力被称道. 笔者在实 ...