转载地址: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) 

【转】MYSQL入门学习之二:使用正则表达式搜索的更多相关文章

  1. 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装

    1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...

  2. 【转】MYSQL入门学习之三:全文本搜索

    转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索   www.2cto.com   1.MyISAM支持全文本搜索,而Inn ...

  3. 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列

    1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...

  4. 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...

  5. 【数据库】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 ( ...

  6. 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装

    1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...

  7. 【转载】salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句

    salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex ...

  8. MyBatis入门学习(二)

    在MyBatis入门学习(一)中我们完成了对MyBatis简要的介绍以及简单的入门小项目测试,主要完成对一个用户信息的查询.这一节我们主要来简要的介绍MyBatis框架的增删改查操作,加深对该框架的了 ...

  9. MySQL入门笔记(二)

    MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询   子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...

随机推荐

  1. ios-XML文档解析之SAX解析

    首先SAX解析xml *xml文档的格式特点是节点,大体思路是把每个最小的子节点作为对象的属性,每个最小子节点的'父'节点作为对象,将节点转化为对象,输出. 每个节点都是成对存在的,有开始有结束.有始 ...

  2. fail2ban使用

    转子: http://www.2cto.com/Article/201406/310910.html 1.fail2ban简介: fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹 ...

  3. 通常Struts框架会自动地从action mapping中创建action对象

    开发者不必在Spring中去注册action,尽管可以这么去做,通常Struts框架会自动地从action mapping中创建action对象 struts2-spring-plugin-x-x-x ...

  4. RAC GI安装,报"Task resolv.conf Integerity"验证失败

    安装12.1.0.2 rac测试环境的时候,报"Task resolv.conf Integerity"验证失败 解决方案: 因为测试环境,没有使用DNS,删除resolv.con ...

  5. c# Task编程一个task抛出异常后怎么取消其他线程

    从MSDN的Forum上看到别人提供的解决方案,感觉还是比较靠谱,所以就保存下来. CancellationTokenSource cts = new CancellationTokenSource( ...

  6. 转:python webdriver API 之 验证码问题

    对于 web 应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测 ...

  7. 模拟退火法(吊打XXX)Bzoj3680

    3680: 吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 308  Solved: 94 [Subm ...

  8. iis access denied, you do not have permission.

    this kind of problems are usually caused by some IIS configuration issues, like application pool set ...

  9. eclipse批量删除断点(转)

    1.首先调出BreakPoints选项卡(Window--show View--Other--BreakPoints). 2.选择BreakPoints选项卡,选择所有断点,点击删除即可. 

  10. javascript浏览器对象

    window对象 1.window对象 window对象是BOM的核心,window对象指当前的浏览器窗口 所有JS全局对象.函数以及变量均自动成为window对象的成员 全局变量是window对象的 ...