一、正则表达式

1、使用like可以进行不确定的查询(模糊查询),然而,模糊 查询的功能有限,当需要进行更加复杂的模式匹配时,可以 使用正则表达式来完成。

2、正则表达式可以对指定的字符串与模式之间执行模式匹配。  模式可以是普通的字符串,也可以是含有特殊意义字符的字  符串。

3、MySQL中,正则表达式使用regexp或rlike关键字。二者为同 义词。

4、regexp左侧操作数为要匹配的字符串,而右侧操作数为匹配  模式。当左侧字符串能够成功匹配右侧的模式时,返回1  ( true),否则返回0( false)。

5、右侧操作数(模式)可以是简单的常量字符串,也可以含有 特殊意义的字符。当含有特殊意义字符时,可以进行功能非 常强大的匹配 。

二、正则表达式可以含有以下特殊字符:
      ^ 从字符串开头进行匹配
      $ 匹配字符串结尾
      . 匹配任意一个字符
     ? 前面的字符出现0次或1次。
      + 前面的字符出现1次或多次。

     * 前面的字符出现0次或多次。
     () 表示一个整体。
      [] 对[]内的任意一个字符进行匹配。如果含有”-”,则对字符 区间的任意字符进行匹配。

[^] 不含有[]内的所有字符或区间。
      | 匹配|分隔的任意一个字符。
     {m} 对{}前面的字符匹配m次。
     {m,n}对{}前面的字符匹配m到n次,包括边界值。

{m,}对{}前面的字符匹配m到多次。

说明:
m需要小于等于n。
,之间不能存在空格。

/*正则表达式
字符串 regexp 模式
正式表达式可以进行模式的匹配,如果左边字符串可以匹配右边
的模式,返回1(true),否则返回0(false)。
模式可以是常规的字符串,也可以含有特殊字符(可以进行复杂的匹配)。
*/
select 'abc' regexp 'ab';
select 'abc' regexp 'bc';
#^从开头进行匹配
select 'abc' regexp '^ab';
select 'abc' regexp '^bc';
#$匹配字符串末尾
select 'abc' regexp 'ab$';
select 'abc' regexp 'bc$';
#^与$联合使用
select 'abc' regexp '^abc$';
#.匹配任意一个字符
select 'abc' regexp '^a.c$';
select 'ac' regexp '^a.c$';
#?匹配前面字符0次或1次。
select 'abc' regexp '^ab?c$'
select 'ac' regexp '^ab?c$'
select 'abbc' regexp '^ab?c$'
#+匹配前面字符1次或多次。
select 'abc' regexp '^ab+c$'
select 'abbbc' regexp '^ab+c$'
select 'ac' regexp '^ab+c$'
#*匹配前面字符0次或多次
select 'ac' regexp '^ab*c$'
select 'abc' regexp '^ab*c$'
select 'abbbbc' regexp '^ab*c$'
#()表示一个整体。
select 'ac' regexp '^(ab)?c$';
select 'c' regexp '^(ab)?c$';
select 'ababc' regexp '^(ab)?c$';
select 'ababc' regexp '^(ab)+c$';
#[]对其中的任意一个字符进行匹配,仅能匹配一个字符。
select 'abc' regexp '^a[abcdefg]c$';
#仅能匹配一个字符
select 'abgc' regexp '^a[abcdefg]c$';
#[]内可以使用-表示一个区间,表示匹配区间内的任意一个字符。
#包括区间的边界。
select 'abc' regexp '^a[a-k]c$';
select 'a3c' regexp '^a[0-5]c$';
#如果[]内需要匹配],则]必须紧跟在[之后。
select 'a]c' regexp '^a[ab]c]c$'
select 'a]c' regexp '^a[]abc]c$'
#如果[]内需要匹配-,则-必须出现在[]的两端(开始或结束)。
select 'a-c' regexp '^a[a-kx]c$'
select 'a-c' regexp '^a[-akx]c$'
select 'a-c' regexp '^a[akx-]c$'
#[^] 不含有区间内的任意一个字符
select 'abdsfsdf' regexp '^[^0-9]+$'
select 'abd5sfsdf' regexp '^[^0-9]+$'
#| 匹配|分隔的任意一个字符
select 'abc' regexp '^a(b|c|d)c$'
select 'adc' regexp '^a(b|c|d)c$'
select 'abc' regexp '^a[b-d]c$'
#{m} 匹配前面的字符m次
select 'abc' regexp '^ab{3}c$'
select 'abbbc' regexp '^ab{3}c$'
#{m,n} 匹配前面的字符m次到n次,包含m与n。
select 'abc' regexp '^ab{2,5}c$'
select 'abbbc' regexp '^ab{2,5}c$'
#{m,} 匹配前面的字符m次或更多次。
select 'abc' regexp '^ab{2,}c$'
select 'abbc' regexp '^ab{2,}c$'
select 'abbbbbbc' regexp '^ab{2,}c$'
#?,*,+也可以使用{m,n}实现。
select 'abc' regexp '^ab?c$'
select 'abc' regexp '^ab{0,1}c$';
select 'abc' regexp '^ab+c$'
select 'abc' regexp '^ab{1,}c$';
select 'abc' regexp '^ab*c$'
select 'abc' regexp '^ab{0,}c$';
#{m,n} m需要小于等于n
select 'abc' regexp '^ab{1,0}c$';
#{m,n}不要含有空格
select 'abc' regexp '^ab{0 , 1}c$';

  

Mysql(四)正则表达式的更多相关文章

  1. mysql中正则表达式的使用

    mysql中正则表达式的性能要高于like,所以这里总结一下正则表达式的使用. 正则表达式的模式及其含义: 下面举例说明其用法: 建表student: create table student(id ...

  2. MYSQL使用正则表达式过滤数据

    一.正则与LIKE的区别 Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符.字符串.例如:select * from wp_posts where post_name REGEXP ...

  3. MySql 使用正则表达式

    MySql 用where 子句对正则表达式提供了支持,允许你指定正则表达式,注意mysql仅支持多数正则表达式实现的一个很小的子集. 1.基本字符匹配: SELECT prod_name FROM p ...

  4. spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号)

    spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号) 比如我原来有,spring-boot-user微服务,后台进行迭代更新,另外其了一个微服务: sprin ...

  5. Mysql 四种事务隔离介绍以及锁机制

    还有很多不太懂,这里收集几份大佬文章“飞机票”,待我整理好了,再好好写一篇文章吧. MySQL的四种事务隔离级别 https://www.cnblogs.com/huanongying/p/70215 ...

  6. mysql四-1:单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

  7. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  8. Mysql(四)-1:单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

  9. Python、mysql四-1:单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

随机推荐

  1. Getting Start chrome-extension demo

    写一个小小的chrome扩展demo~ 准备工作 了解一下插件chrome-extension: 在应用商店里的插件基本上都是以.crx为文件后缀,该文件其实就是一个压缩包,包括插件所需要的html. ...

  2. ucos获得系统时间OSTimeGet();

    OSTimeGet() 获得系统节拍值OSTime,滴答定时器中断一次OSTime++.

  3. P4292 [WC2010]重建计划

    无脑上二分+淀粉质完事了 每个子树算的时候把儿子按照最长路径从小到大依次做,和前面的单调队列算一波,每个儿子的复杂度不超过这个子树大小 // luogu-judger-enable-o2 #inclu ...

  4. 使用Redis做分布式

    一 为什么使用 Redis 在项目中使用 Redis,主要考虑两个角度:性能和并发.如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis. 性能: 如 ...

  5. 4字节emoji表情对应的Unicode编码获取和编码转换

    GitHub Flavored Markdown 今天研究了一天Markdown移动端和pc端统一实现方式,由于以前有搞过移动端富文本编辑器,搞Markdown简单多了: 其中GFM的表情语法不错,比 ...

  6. fatal error: caffe/proto/caffe.pb.h: No such file or directory

    solution: $make clean $make all -j8

  7. 软件测试--w模型

    W模型 优点:开发把随着整个开发周期,需求.和设计同样要测试,更早的介入测试,可以发现初期的缺陷,修复成本低:分阶段工作方便项目整体管理: 缺点:开发和测试依然是线性关系,需求的变更和调整,依然不方便 ...

  8. 腾讯/阿里/百度 BAT人才体系的职位层级、薪酬、晋升标准

    互联网圈有这么一句话:百度的技术,阿里的运营,腾讯的产品.那么代表互联网三座大山的BAT,内部人才体系有什么区别呢?今天老李就带领大家看一看~ ★ 腾讯 ★   1. 职级 腾讯职级体系分6级,最低1 ...

  9. PAT甲题题解-1115. Counting Nodes in a BST (30)-(构建二分搜索树+dfs)

    题意:给出一个序列,构建二叉搜索树(BST),输出二叉搜索树最后两层的节点个数n1和n2,以及他们的和sum: n1 + n2 = sum 递归建树,然后再dfs求出最大层数,接着再dfs计算出最后两 ...

  10. Backbone实践案例

    By:软件11 王思伦 2013-10-4 Backbone简述: Backbone基于MVC架构,用于开发重量级Javascript应用的框架. 如上文所述,Backbone包含多种类,但主要包含了 ...