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

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

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

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

1、基本字符匹配

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000'
ORDER BY prod_name; ------返回------
+------------------------+
| prod_name |
+------------------------+
| JetPack 1000 |
+------------------------+

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '.000'
ORDER BY prod_name; ------------返回----------- +-------------------------+
| prod_name |
+-------------------------+
| JetPack 1000 |
| JetPack 2000 |
+-------------------------+

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

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

如:WHERE prod_name REGEXP BINARY 'JetPack .000'

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

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000 | 2000'
ORDER BY prod_name; ------------返回------------ +----------------------+
| prod_name |
+----------------------+
| JetPack 1000 |
| JetPack 2000 |
+----------------------+

[ ] 匹配任何单一字符。

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

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

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY prod_name; -------------返回------------ +--------------------+
| prod_name |
+--------------------+
| 1 ton anvil |
| 2 ton anvil |
+--------------------+

匹配范围

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

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '[1-5] Ton'
ORDER BY prod_name; ----------返回----------- +-------------------+
| prod_name |
+-------------------+
| .5 ton anvil |
| 1 ton anvil |
| 2 ton anvil |
+-------------------+

匹配特殊字符

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

\\-  表示查找 -

\\.  表示查找 .

SELECT prod_name
FROM vendors
WHERE vend_name REGEXP '\\.'
ORDER BY vend_name; -------------返回------------- +----------------------+
| vend_name |
+----------------------+
| Furball Inc. |
+----------------------+

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

\\f    换页
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表

匹配字符类

代码

[:a;num:]    任意字母和数字(同 [a-zA-Z0-9])
[:alpha:] 任意字符(同 [a-zA-Z])
[:blank:] 空格和制表(同 [\\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与["print:] 相同,但不包括空格
[:lower:] 任意小写字线(同 [a-z])
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:] 又不在 [:cntrl:] 中的任意字符
[space:] 包括空格在内的任意空白字符(同 [\\f\\n\\t\\r\\v])
[:upper:] 任意大小字母(同 [A-Z])
[:xdigit:] 任意十六进制数字(同 [a-fA-F0-9])

匹配多个实例

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

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

SELECT prod_name
FROM products
WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
ORDER BY prod_name; ------------返回------------ +-----------------------+
| prod_name |
+-----------------------+
| TNT (1 stick) |
| TNT (5 sticks) |
+-----------------------+

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

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. Android获取系统时间方法的总结

    Android获取系统时间方法的方法有很多种,常用的有Calendar.Date.currentTimeMills等方法. (1)Calendar Calendar获取系统时间首先要用Calendar ...

  2. TINYINT,SMALLINT,MEDIUMINT,INT,INTEGER,BIGINT;text,longtext,mediumtext,ENUM,SET等字段类型区别

    http://www.path8.net/tn/archives/951 MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述, ...

  3. MongoDB学习-安装流程

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型. ...

  4. WebDriver多线程并发

    要想多线程并发的运行WebDriver,必须同时满足2个条件,首先你的测试程序是多线程,其次需要用到Selenium Server.下载位置如下图: 下载下来后是一个jar包,需要在命令行中运行.里面 ...

  5. Redis-分片

    分片(partitioning)就是将你的数据拆分到多个 Redis 实例的过程,这样每个实例将只包含所有键的子集.本文第一部分将向你介绍分片的概念,第二部分将向你展示 Redis 分片的可选方案. ...

  6. linux常用命令之文件权限

    CHGRP chgrp – change group ownership,改变组别的所有权 用法 chgrp 组别名 文件\目录名 选项 -R  (recursive)递归改变,将目录下所有的文件和目 ...

  7. heX——基于 HTML5 和 Node.JS 开发桌面应用

    heX 是网易有道团队的一个开源项目,允许你采用前端技术(HTML,CSS,JavaScript)开发桌面应用软件的跨平台解决方案.heX 是你开发桌面应用的一种新的选择,意在解决传统桌面应用开发中繁 ...

  8. JavaScript中对象的比较

    Javascript中有'=='和'==='两种相等比较,后者是全等,会判断数据类型,前者是相等,在比较时,会发生隐式转换. 如果将两个对象做'=='比较,结果会如何呢? 比如有如下两个对象: var ...

  9. JavaScript学习笔记-用于模式匹配的String方法

    用于模式匹配的String方法:   String支持4种使用正则表达式的方法:           seach()用于检索,参数是一个正则表达式,返回第一个与之匹配的子串的位置,找不到则返回-1,如 ...

  10. 带你秒学JavaScript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理.是静态网页转变为动态的 ...