转载地址: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. HTTPS and the TLS handshake protocol阅读笔记

    目的 为能够透彻理解HTTPS报文交互过程,做此笔记. 本文大部分内容来自 : http://albertx.mx/blog/https-handshake/ http://www.cnblogs.c ...

  2. Android APP开发笔记

    环境搭建 windows系统上需要以下软件: android SDK -- app开发工具包, 开发运行环境(包括SDK管理工具,和虚拟设备管理). JDK -- java 开发工具包, 负责app代 ...

  3. IDEA 常见文件类型的图标介绍

    官网地址:http://www.jetbrains.com/idea/webhelp/symbols.html        对于各个图标,上图的 Description 写得非常详细,但是有几个还是 ...

  4. UITableView——点击某一行移动到指定位置

    选中某一行后想要tableView自动滚动使得选中行始终处于table的top.middle或者bottom,使用以下方法中的一个就可以实现: [tableView scrollToRowAtInde ...

  5. UIStackView入门

    http://www.cocoachina.com/ios/20150623/12233.html

  6. ofbiz进击 第六节。 --OFBiz配置之[widget.properties] 配置属性的分析

    配置内容分析如下 # -- 定义上下文使用者 -- security.context =default # -- 定义密码限制长度最小值 -- password.length.min =5 # -- ...

  7. C++之路进阶——bzoj1455(罗马游戏)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  gryz2016 Logout 捐赠本站 Notice:由于本OJ ...

  8. Andriod环境搭建

    安卓是一款现在在移动端十分流行的系统,本人出于好奇心,希望彻底了解安卓的开发技. 首先了解一下安卓的系统构架,安卓大致分为四层架构,五块区域: 1.Linux内核层 Andriod是基于Linux2. ...

  9. [转]IP动态切换脚本

    因为公司办公室要设置固定IP才行,而家里的IP段和公司是不一样的,家里采用了DHCP机制,这样每次就得改IP设置,很是不方便,就写了这个脚本来动态切换,很流畅的说!WINXP,WIN7测试通过~嘿嘿~ ...

  10. -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

    2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...