文档章节

MySQL必知必会-8MySQL正则表达式

z
 zhiliubai
发布于 2017/03/18 12:35
字数 781
阅读 2
收藏 0

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

  
  
  1. SELECT
  2. prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '1000'
  7. ORDER BY
  8. prod_name;

LIKE与REGEXP不同的地方,LIKE匹配整个列(除非使用通配符),REGEXP在列内匹配,例如:
列值为 hello 2017
LIKE ‘2017’   //不能匹配
LIKE '%2017' //能够匹配
REGEXP ‘2017’ //能够匹配

REGEXP也能够匹配整个列,与LIKE相同的作用,使用^和$即可。^是指开始处,$是指结束处,如果是在[]里^是指匹配之外的任何东西,[^123] 却匹配除这些字符外的任何东西。

MySQL中正则表达式(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用BINARY关键字,如
   
   
  1. SELECT
  2. products.prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP BINARY 'JetPack .000';

进行OR匹配
为搜索两个串之一(或者为这个串,或者为另一个串),使用 |
   
   
  1. SELECT
  2. products.prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '1000|2000'
多个OR条件,可以给出多个|,例如
   
   
  1. SELECT
  2. products.prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '1000|2000|5';

匹配几个字符之一
通过指定一组用[和]括起来的字符来完成。
   
   
  1. SELECT
  2. prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '[123] Ton'
  7. ORDER BY
  8. prod_name;
[123] 定义一组字符,它的意思是匹配1或2或3,因此1 ton和2 ton都匹配且返回。
[]是另外一种OR语句,正则表达式[123]Ton为[1|2|3]Ton的缩写

匹配范围
集合可用来定义要匹配的一个或多个字符。下面所列都是合法的。
[0-9] 
[1-3]
[6-9] 
[a-z]
   
   
  1. SELECT
  2. products.prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '[1-5] Ton';

匹配特殊字符
为了匹配特殊字符必须\\作为前导,这种处理也叫转义,例如
\\-表示查找-
\\.表示查找.
\\\ 表示查找\
   
   
  1. SELECT
  2. vendors.vend_name
  3. FROM
  4. vendors
  5. WHERE
  6. vend_name REGEXP '\\.'
  7. ORDER BY
  8. vend_name;
\\也用来引用元字符(具有特殊含义的字符)
\\f     换页
\\n    换行
\\r     回车
\\t     制表
\\v    纵向制表

转移字符需要两个反斜杠(MySQL自己解释一个,正则表达式解释另一个 )

匹配多个实例
*    0个或多个匹配
+    1个或多个匹配(等于{1,})
?    0个或1个匹配
{n}    指定书目的匹配
{n,}   不少于指定数目的匹配
{n,m}   匹配数目的范围(m不超过255)
   
   
  1. SELECT
  2. prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '\\([0-9] sticks?\\)';
\\([0-9] sticks?\\)  解释为 \\(  匹配(,[0-9]匹配任意数字,sticks?匹配stick和sticks(s后面的?使s可选)

   
   
  1. SELECT
  2. prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '[0-9]{4}';
匹配任意4个连在一起的数字。

定位符
^    文本的开始
$    文本的结尾
[[:<:]]   词的开始
[[:>]]]   词的结尾

    
    
  1. SELECT
  2. prod_name
  3. FROM
  4. products
  5. WHERE
  6. prod_name REGEXP '^[0-9\\.]';
^匹配串的开始,只在.或任意数字为串中第一个字符时才匹配它们.

^有两种用法,在集合中(用[和]定义),用它来否定该集合,否则,用来指串的开始处。

为了让REGEXP与LIKE具有相同的作用,需要使用^表示开始处,$表示结束处。

简单的正则表达式测试
    
    
  1. SELECT 'hello' REGEXP '0-9';
这个例子显然返回0

本文转载自:http://blog.csdn.net/zoroday/article/details/55668112

z
粉丝 0
博文 26
码字总数 0
作品 0
广州
私信 提问
程序员开发必知必会之正则表达式学习资料

正则表达式30分钟入门教程(https://deerchao.net/tutorials/regex/regex.htm) 本教程目标:30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用...

崔庆才
07/26
0
0
使用MySQL正则表达式 __MySQL必知必会

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较。 MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据。 MySQL仅支持...

Airship
2016/03/04
62
0
Mysql必知必会(4):使用正则表达式搜索(REGEXP)

本文主要介绍如何在Mysql中使用正则表达式进行搜索。 正则表达式是一个非常大的内容,我会在之后专门写博客介绍,这里只是简介一些常用匹配模式 博客文章地址:http://weiya.me/item/59.htm...

星空幻颖
2017/02/05
0
0
5本数据库经典之作,没看过的都白学了!

  【IT168 评论】1、 《数据库系统实现》   内容简介:书中对数据库系统实现原理进行了深入阐述,并具体讨论了数据库管理系统的三个主要成分――存储管理器、查询处理器和事务管理器的实...

it168网站
2017/11/13
0
0
自学书籍.MySQL必知必会 - 用正则表达式进行搜索

正则表达式匹配: 1.正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串(^$)/文本子串进行比较 2.默认REGEXP不区分大小写,如果要区分大小写可用REGEXP BINARY来匹配 . 匹配任意一...

满满李
2016/04/16
6
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部