转载地址:http://www.2cto.com/database/201212/173869.html
一、正则表达式介绍
www.2cto.com
正则表达式是用来匹配文本的特殊的串(字符集合)。
二、使用MySQL正则表达式
1、MySQL仅仅支持多数正则表达式实现的一个很小的子集。
2、LIKE匹配整个列值;而REGEXP匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回。看下面的例子:
www.2cto.com
[sql]
mysql>select username from v9_admin where username like 'space';
Emptyset (0.00 sec)
mysql>select username from v9_admin where username REGEXP 'space';
+-----------+
|username |
+-----------+
|warmspace |
+-----------+
1 rowin set (0.02 sec)
3、默认MySQL中的正则表达式匹配不区分大小写,可使用BINARY关键字区分大小写,如
[sql]
mysql>select username from v9_admin
-> where username REGEXP BINARY'SPACCE';
Emptyset (0.04 sec)
4、进行OR匹配:为搜索两个串之一,使用|,如下所示:
[sql]
mysql>select roleid from v9_admin_role
-> where roleid REGEXP '1|3';
+--------+
|roleid |
+--------+
| 1 |
| 3 |
+--------+
2 rowsin set (0.00 sec)
5、匹配几个字符之一:匹配任何单一字符。如下所示:
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[123]';
+-----------------+
|name |
+-----------------+
|101-02-01-005-2 |
|101-02-01-005-1 |
|101-02-01-005-3 |
+-----------------+
3 rowsin set (0.00 sec)
正如所见,[]是另一种形式的OR语句。'005-[123]'与’005-[1|2|3]’是等价的。
匹配除给定字符外的字符:
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[^123]';
+-------------------+
|name |
+-------------------+
|101-02-01-005-4.2 |
|101-02-01-005-4 |
|101-02-01-005-5 |
+-------------------+
3 rowsin set (0.00 sec)
6、可使用-来定义一个范围。如[1-9],[a-b]。
[sql]
mysql>select name from v9_collection_node
-> where name REGEXP '005-[1-3]';
+-----------------+
|name |
+-----------------+
|101-02-01-005-2 |
|101-02-01-005-1 |
|101-02-01-005-3 |
+-----------------+
3 rowsin set (0.00 sec)
7、为了匹配特殊字符,必须用\\为前导,例如\\-,\\.等。这种处理即转义(escaping)。
多数正则表达式实现使用单个反斜杠转义特殊字符,但MYSQL要求两个(MYSQL自己解释一个,正则表达式库解释另一个)。
\\也用来引用元字符(具有特殊含义的字符),如下表:
8、为了更方便工作,可以使用预定义的字符集,称为字符类(character class)。
[sql]
mysql> select name fromv9_collection_node
-> where name REGEXP '[[:digit:]]';
+-------------------+
| name |
+-------------------+
| 101-10-01-002-1 |
| 101-02-01-005-4.2 |
| 101-02-01-005-2 |
| 101-02-01-005-1 |
| 101-02-01-005-3 |
| 101-02-01-005-4 |
| 101-02-01-005-5 |
| 101-10-01-002-2 |
| 101-11-04-001-1 |
+-------------------+
9 rowsin set (0.00 sec)
9、使用正则表达式重复元字符匹配多个实例:
[sql]
mysql> select name fromv9_collection_node
-> where name REGEXP '1{2}';
+-----------------+
| name |
+-----------------+
| 101-11-04-001-1 |
+-----------------+
1 rowin set (0.00 sec)
10、定位符(为了匹配特定位置的文本):
[sql]
mysql> select name from v9_collection_node
-> where name REGEXP '2$';
+-------------------+
| name |
+-------------------+
| 101-02-01-005-4.2 |
| 101-02-01-005-2 |
| 101-10-01-002-2 |
+-------------------+
3 rows in set (0.00 sec)
11、使REGEXP起类似LIKE的作用,它们的区别在于LIKE匹配整个串而REGEXP匹配子串。利用定位符,通过用^开始每个表达式,用$结束每个表达式。
12、简单的正则表达式测试:可以在不使用
数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0或1(匹配)。
[sql]
mysql> select 'hello' REGEXP'[0-9]';
+------------------------+
| 'hello' REGEXP '[0-9]' |
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec)
- 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装
1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...
- 【转】MYSQL入门学习之三:全文本搜索
转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而Inn ...
- 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列
1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...
- 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等
1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...
- 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装
1.0 我的操作系统是CentOS Linux release 7.6.1810 (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...
- 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装
1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...
- 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...
- MyBatis入门学习(二)
在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了 ...
- MySQL入门笔记(二)
MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询 子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...
随机推荐
- loadview 方法调用
从官方文档看 不应该直接调用此方法,当控制器当前的view为空的时候,这个方法就会被调用,并且会创建一个空白的view,如果viewcontroller绑定了storyboard或者xib就不用说了. ...
- python gzip,bz2学习
一.gzip import gzip 1.解压缩 a = gzip.open('a.tar.gz') b = open('a.tar','wb') b.write(a.read()) a.close( ...
- Oracle自增长ID
在Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键.例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量 ...
- oracle pl sql 解锁表
select p.spid,a.serial#, c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$pr ...
- CocoaPods看的三篇文章
http://www.bubuko.com/infodetail-425274.html//有图片 http://www.cnblogs.com/jys509/p/4839803.html http: ...
- 设置searchBar上右边取消按钮的颜色
[[UIBarButtonItem appearanceWhenContainedIn: [UISearchBar class], nil] setTintColor:RGBA(0, 161, 176 ...
- 如何为 Eclipse 中的 Java 源文件设置为 UTF-8 默认编码(转)
要让一个 Java 源文件打开时编码格式为 UTF-8,需要做2件事情: 1)设置Java 源文件的默认编码格式为UTF-8: 2)设置workspace的编码格式为UTF-8. 相应设置如下: 设置 ...
- CS2013调试DLL
需要打开两个项目,一个是Win32Project1,由这个项目创建DLL,注意要在DLL函数前加上__declspec(dllexport),这样就会还配套生成一个.lib 然后再打开一个项目,一般为 ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- struts不同session范围添加、访问属性
第01步:编写bean类 package com.self.bean; import java.util.Date; public class User { private Date birthday ...