美文网首页
MySQL正则表达式

MySQL正则表达式

作者: IT的咸鱼 | 来源:发表于2018-07-24 20:42 被阅读0次

正则表达式的应用

前面的几节的过滤例子允许用匹配、比较和通配操作符来寻找数据。对于基本的数据过滤,这样就足够了。但是随着过滤条件的复杂性的增加,where子句本身的复杂性也有必要增加。这也就是正则表达式变得有用的地方。

正则表达式是用来匹配文本中特殊的字符集合

MySQL 支持正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

使用正则表达式查询和使用like区别是什么?

LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回,这时一个非常重要的差别(当然,如果适应定位符号^和$,可以实现REGEXP匹配整个列而不是列的子集)。

下表中的正则模式可应用于 REGEXP 操作符中。

符号             含义

^                   匹配输入字符串的开始位置。

$                   匹配输入字符串的结束位置。

[[:<:]]             词的开始

[[:>:]]             词的结尾

.                     匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用 '[.\n]' 的模式。

[...]                 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

[^...]                求否字符符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。

p1|p2|p3        匹配 p1 或 p2 或 p3。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

*                      匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。

+                     匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。

{n}                   n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

{n,m}                m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

                          使用MySQL正则表达式

基本字符串匹配

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’ ORDER BY prod_name;

检索prod_name包含文本1000的所有行。除关键字LIKE被REGEXP替代外,这条语句看上去非常像使用LIKE的语句。它告诉MySQL: REGEXP后所跟的东西作为正则表达式(与文字正文1000匹配的一个正则表达式)处理。

SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’ ORDER BY prod_name;

正则中,.代表匹配任意一个字符。区分大小写时:使用BINARY关键字

WHERE prod_name REGEXP BINARY ‘JetPack .000’;

进行OR匹配(使用‘|’)

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’ ORDER BY prod_name;

匹配几个字符之一

用[和]括起来的字符完成

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’ ORDER BY prod_name;

[]是另一种形式的OR语句。 事实上,正则表达式[123]Ton

为[1|2|3]Ton的缩写,也可以使用后者。但是,需要用[]来定义OR语句查找什么。

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1|2|3 Ton’ ORDER BY prod_name;

匹配范围

下面的集合将匹配数字0到9:[0-9],a到z:[a-z]

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-5] Ton’ ORDER BY prod_name;

匹配特殊字符

必须用\\为前导,\\-表示查找-,\\.表示查找.

SELECT vend_name FROM vendors WHERE vend_name REGEXP ‘\\.’ ORDER BY vend_name;

这种处理就是所谓的转义( escaping),正则表达式内具有特殊意义的所有字符都必须以这种方式转义。

匹配\ 为了匹配反斜杠( \)字符本身,需要使用\\\。

元 字 符 说 明

\\f          换页

\\n        换行

\\r         回车

\\t         制表

\\v       纵向制表

相关文章

  • MySql基本操作(二)

    1. 正则表达式 MySQL可以通过 LIKE ...% 来进行模糊匹配。MySQL 同样也支持其他正则表达式的匹...

  • 正则表达式的查询

    MySQL中使用用正则表达式 进行搜索 本小节将学习如何在MySQL WHERE子句内使用正则表达式来更好地控制数...

  • mysql 正则表达式

    mysql 正则表达式的运算符是REGEXP mysql 的正则表达式不支持 \d, 所以匹配数字只能用 [0-9...

  • mysql(04day)

    Mysql支持正则表达式的匹配,Mysql中使用REGEXP操作符来进行正则表达式匹配。 下面中的正则模式中可用于...

  • MySQL笔记

    MySQL学习笔记 [toc] 登录和退出MySQL服务器 基本语法 正则表达式 字段拼接 分组 全文搜索 视图 ...

  • 常用SQL技巧

    1.正则表达式MySQL利用regexp命令提供正则表达式功能,匹配时区分大小写。 2.巧用rand()提取随机行...

  • Python 高级

    面向对象 正则表达式 mysql PyMySQL php 3.0 之后使用的库 安装 使用 事务

  • 数据库学习笔记——23 用正则表达式进行搜索

    补充前面拉下的一节课 1 使用MySQL正则表达式 正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本...

  • chapter09:用正则表达式进行搜索

    使用MySQL正则表达式 仅为正则表达式语言的一个子集。 基本字符匹配 例:检索列prod_name包含文本.00...

  • MySQL正则表达式

    一.简介 正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较。MySQL用where子句对正...

网友评论

      本文标题:MySQL正则表达式

      本文链接:https://www.haomeiwen.com/subject/nfvymftx.html