正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。

MySQL仅支持多数正则表达式实现的一个很小的子集。

----------------------

1、基本字符匹配

REGEXP后所跟的东西作为正则表达式处理。

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '1000'
  4. ORDER BY prod_name;
  5.  
  6. ------返回------
  7. +------------------------+
  8. | prod_name |
  9. +------------------------+
  10. | JetPack 1000 |
  11. +------------------------+

.  表示匹配任意一个字符。

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '.000'
  4. ORDER BY prod_name;
  5.  
  6. ------------返回-----------
  7.  
  8. +-------------------------+
  9. | prod_name |
  10. +-------------------------+
  11. | JetPack 1000 |
  12. | JetPack 2000 |
  13. +-------------------------+

MySQL中的正则表达式匹配不区分大小写。

为区分大小写,可使用BINARY关键字。

如:WHERE prod_name REGEXP BINARY 'JetPack .000'

2、为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。

| 作为OR操作符,表示匹配其中之一。可给出两个以上的OR条件。

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '1000 | 2000'
  4. ORDER BY prod_name;
  5.  
  6. ------------返回------------
  7.  
  8. +----------------------+
  9. | prod_name |
  10. +----------------------+
  11. | JetPack 1000 |
  12. | JetPack 2000 |
  13. +----------------------+

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

[ ]是另外一种形式的OR语句,[123] Ton  就是  [1 | 2 | 3] Ton 的缩写。

^ 否定一个字符集合,将匹配除指定字符外的任何东西。[^123]将匹配除这些字符外的任何东西。

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '[123] Ton'
  4. ORDER BY prod_name;
  5.  
  6. -------------返回------------
  7.  
  8. +--------------------+
  9. | prod_name |
  10. +--------------------+
  11. | 1 ton anvil |
  12. | 2 ton anvil |
  13. +--------------------+

匹配范围

[0123456789] 或 [0-9] 将匹配数字0到9

[a-z] 匹配任意字母符号

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '[1-5] Ton'
  4. ORDER BY prod_name;
  5.  
  6. ----------返回-----------
  7.  
  8. +-------------------+
  9. | prod_name |
  10. +-------------------+
  11. | .5 ton anvil |
  12. | 1 ton anvil |
  13. | 2 ton anvil |
  14. +-------------------+

匹配特殊字符

\\  为前导。即转义.正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

\\-  表示查找 -

\\.  表示查找 .

  1. SELECT prod_name
  2. FROM vendors
  3. WHERE vend_name REGEXP '\\.'
  4. ORDER BY vend_name;
  5.  
  6. -------------返回-------------
  7.  
  8. +----------------------+
  9. | vend_name |
  10. +----------------------+
  11. | Furball Inc. |
  12. +----------------------+

\\  也用来引用元字符(具有特殊意义的字符)

  1. \\f 换页
  2. \\n 换行
  3. \\r 回车
  4. \\t 制表
  5. \\v 纵向制表

匹配字符类

  1. 代码
  2.  
  3. [:a;num:] 任意字母和数字(同 [a-zA-Z0-9])
  4. [:alpha:] 任意字符(同 [a-zA-Z])
  5. [:blank:] 空格和制表(同 [\\t])
  6. [:cntrl:] ASCII控制字符(ASCII 031127
  7. [:digit:] 任意数字(同[0-9])
  8. [:graph:] 与["print:] 相同,但不包括空格
  9. [:lower:] 任意小写字线(同 [a-z])
  10. [:print:] 任意可打印字符
  11. [:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
  12. [space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
  13. [:upper:] 任意大小字母(同 [A-Z])
  14. [:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例

  1. 元字符 说明
  2. * 0个或多个匹配
  3. + 1个或多个匹配(等于 {1, })
  4. ? 0个或1个匹配(等于 {0, 1})
  5. {n} 指定数目的匹配
  6. {n, } 不少于指定数目的匹配
  7. {n ,m} 匹配数目的范围(m不超过255

以下例子:s后的?使s可选,因为?匹配它前面的任何字符的0次或1次出现。

  1. SELECT prod_name
  2. FROM products
  3. WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
  4. ORDER BY prod_name;
  5.  
  6. ------------返回------------
  7.  
  8. +-----------------------+
  9. | prod_name |
  10. +-----------------------+
  11. | TNT (1 stick) |
  12. | TNT (5 sticks) |
  13. +-----------------------+

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。

LIKE 匹配整个串,而REGEXP匹配子串。

简单的正则表达式测试  可以在不使用数据库的情况下用SELECT来测试正则表达式。

REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测

试表达式,并试验它们。相应的语法如下:

SELECT 'hello' REGEXP '[0-9]'

这个例子返回0(因为文本hello中没有数字)。

mysql regexp用法的更多相关文章

  1. 【转载】 mysql explain用法

    转载链接:  mysql explain用法 官网说明:     http://dev.mysql.com/doc/refman/5.7/en/explain-output.html 参数:  htt ...

  2. 知识点:Mysql 基本用法之存储过程

    存储过程 一. 介绍 存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql 使用存储过程的优点: 用于替代程序写的SQL语句,实现程序与sql ...

  3. 知识点:Mysql 基本用法之视图

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时 ...

  4. 知识点:Mysql 基本用法之流程控制

    流程控制 一. 条件语句 if 语句实例: delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = ...

  5. 知识点:Mysql 基本用法之函数

    函数 MySQL中提供了许多内置函数 例如: sql 内置函数: 一.数学函数 ROUND(x,y) 返回参数x的四舍五入的有y位小数的值 RAND() 返回0到1内的随机值,可以通过提供一个参数(种 ...

  6. 知识点:Mysql 基本用法之触发器

    触发器 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为 注意:没有查询 一 .创建触发器 触发器基础语法: # 插入前 CREATE TRIGGER tri_before_insert_ ...

  7. 知识点:Mysql 基本用法之事务

    事务 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 事务实例: create table user( id int primar ...

  8. Mysql基本用法-存储引擎-04

    MYSQL中只有 INNODB和BDB 类型的数据表才能支持事务处理!其他的类型是不支持的!(切记!) Mysql基本用法-存储引擎-02中的test_user表 和 phpcvs表 <?php ...

  9. ThinkPHP第十一天(关联模型使用,独立分组配置,MySQL concat用法)

    1.关联模型的使用 定义方式:新建一个类文件UserRelationModel.class.php Class UserRelationModel extends RelationModel{ pro ...

随机推荐

  1. MySQL Error Handling in Stored Procedures

    http://www.mysqltutorial.org/mysql-error-handling-in-stored-procedures/ mysql存储过程中的异常处理   定义异常捕获类型及处 ...

  2. PHP程序员7小时学会Kotlin系列 - 第一小时 背景

    基础知识 Kotlin简单的说是Java语言的改良版本,是一种静态类型编程语言,可运行于JVM.Andoid或JavaScript环境,于2016年2月15日发布1.0正式版.Kotlin定位于一门通 ...

  3. Facebook的Hack语言三大看点

    Hack语言主要有三大看点:类型化.异步.集合. Hack最基础的特性就是类型标注.PHP5已经开始支持对象的类型化,PHP7也提供了标量类型化声明.Hack提供了全面的类型标注支持,与其typech ...

  4. hibnate 创建表的时候type=innodb报错

    这个原因是在MYSQL5.5及以后版本中type=InnoDB 由ENGINE=InnoDB  代替. 解决办法,自己定义一个方言: package com.hotusm.dialect; /** * ...

  5. AFNetworking 3.1

    听说之后AFHttpWorking版本可能会影响到苹果的审核,今天下了最新版本的AFHttpWorking,并且做了简单的封装,我这里是通过cocoapods下载了两个工具 1=AFHttpWorki ...

  6. Scalaz(55)- scalaz-stream: fs2-基础介绍,fs2 stream transformation

    fs2是scalaz-stream的最新版本,沿用了scalaz-stream被动式(pull model)数据流原理但采用了全新的实现方法.fs2比较scalaz-stream而言具备了:更精简的基 ...

  7. python读取文件的前几行

    文件内容rolling.txt: There's a fire starting in my heart 我怒火中烧 Reaching a fever pitch and it's bringing ...

  8. python爬虫技术的选择

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica } span.s1 { } 本篇文章不是入门帖,需要对python和爬虫领 ...

  9. 【GOF23设计模式】观察者模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_观察者模式.广播机制.消息订阅.网络游戏对战原理 package com.test.observer; import ja ...

  10. 【HTML】字符(Glyphs)收集

    Special Characters " " " quotation mark u+0022 ISOnum p:before { content:"\0022& ...