使用MySQL正则表达式 __MySQL必知必会
正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。
MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。
MySQL仅支持多数正则表达式实现的一个很小的子集。
----------------------
9.2.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'
9.2.2 进行OR匹配
为搜索两个串之一(或者这个串,或者为另一个串),使用 | 。
| 作为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) |
+-----------------------+

匹配连在一直的4位数字:WHERE prod_name REGEXP '[[:digit:]]{4}'
定位符
^ 文本的开始
$ 文本的末尾
[[:<:]] 词的开始
[[:>:]] 词的结尾

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

^的双重用途:在集合中(用[ ]定义),用它来否定该集合。否则,用来指串的开始和。
LIKE 匹配整个串,而REGEXP匹配子串。
简单的正则表达式测试 可以在不使用数据库的情况下用SELECT来测试正则表达式。
REGEXP检查总是返回0(没有匹配)或1(匹配),可以用带文字串的REGEXP来测
试表达式,并试验它们。相应的语法如下:
SELECT 'hello' REGEXP '[0-9]'
这个例子返回0(因为文本hello中没有数字)。
from: http://www.cnblogs.com/way_testlife/archive/2010/09/17/1829567.html
使用MySQL正则表达式 __MySQL必知必会的更多相关文章
- MySQL必知必会》正则表达式
<MySQL必知必会>正则表达式 正则表达式 1.1.关键字 REGEXP 正则表达式的使用需要用到关键字 REGEXP . select prod_name from products ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
- 《MySQL必知必会》整理
目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...
- mysql 必知必会总结
以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础. 200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随 ...
- MySql必知必会实战练习(三)数据过滤
在之前的博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,MySql必知必会实战练习(二)数据检索中介绍了所有的数据检索操作,下面对数据过滤操作进行总结. 1. whe ...
- 读《MySql必知必会》笔记
MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...
- MySql必知必会内容导图
<MySQL必知必会>从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用.子查询.正则表达式和基于全文本的搜索.存储过程.游标.触发器.表约束,等等.通过重点突出的章节,条理 ...
- MySQL必知必会1
MySQL必知必会 了解SQL 什么是数据库:数据库(database)保存有阻止的数据的容器,可以把数据库想象成一个文件柜. 什么是表:表(table) 某种特定类型结构的结构化清单,数据库中的 ...
- 《MySQL必知必会》学习笔记——前言
前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...
随机推荐
- sqlserver 汉字转拼音 首写字母 索引 函数
create function fun_getPY(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1 ...
- Python中的多线程编程,线程安全与锁(一)
1. 多线程编程与线程安全相关重要概念 在我的上篇博文 聊聊Python中的GIL 中,我们熟悉了几个特别重要的概念:GIL,线程,进程, 线程安全,原子操作. 以下是简单回顾,详细介绍请直接看聊聊P ...
- POJ 2115 C-Looooops | exgcd
题目 给出一个循环for(int i=A;i!=B;i+=C) 在mod (1<<k) 下是否可以退出循环 是,输出时间,否输出FORVEER 题解: 题意可以变换成 A+Cx=B (mo ...
- bzoj1494【Noi2007】生成树计数
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1494 sol :前排膜拜http://blog.csdn.net/qpswwww/artic ...
- Java不需要加载整张图片而获取图片的大小
转载地址 http://blog.jdk5.com/zh/java-get-image-size-without-loading-the-whole-data/ 利用Java类,获取图片的类型,宽度和 ...
- bzoj3969 [WF2013]Low Power
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3969 [题解] 二分答案x,贪心选取,如果选取了i个,有j对,那么要满足i<=2*j* ...
- memcached 实现读锁
memcached锁,网上大多就介绍乐观锁(cas)[1.2.4以上版本,telnet连接上memcache使用status可以查看版本号].核心就是每次写入数据的时候使用 cas($cas_toke ...
- SqliteDeveloper 破解
方法1: 注册表删除 HKEY_CURRENT_USER\SharpPlus\SqliteDev 下的 StartDate 方法2: 安装完成SQLite Developer后,先不要打开软件,下面 ...
- Mybatis注解的使用
一.mybatis 简单注解 关键注解词 : @Insert : 插入sql , 和xml insert sql语法完全一样 @Select : 查询sql, 和xml select sql语法完全一 ...
- 无线网络发射器选址 (NOIP2014)(真·纯模拟)
原题传送门 好吧,如果说D1T1是纯模拟大水题 D2T1就是纯模拟略水题. 这道题首先我们要看一看数据范围.. 0<=n,m<=128 送分也不带这么送的吧.. 二维前缀和,前缀和,二次循 ...