MySQL 正则表达式

在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。

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

如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。

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

模式 描述
^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n‘ 或 ‘\r‘ 之后的位置。
$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n‘ 或 ‘\r‘ 之前的位置。
. 匹配除 "\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 次。

实例

了解以上的正则需求后,我们就可以更加自己的需求来编写带有正则表达式的SQL语句。以下我们将列出几个小实例(表名:person_tbl )来加深我们的理解:

查找name字段中以‘st‘为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘^st‘;

查找name字段中以‘ok‘为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘ok$‘;

查找name字段中包含‘mar‘字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘mar‘;

查找name字段中以元音字符开头或以‘ok‘字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP ‘^[aeiou]|ok$‘;

from: http://www.runoob.com/mysql/mysql-regexp.html
时间: 2024-10-11 22:02:05

MySQL 正则表达式的相关文章

MySQL 正则表达式搜索

products表如下: 1. 基本字符匹配 使用正则表达式与LIKE的区别,正则表达式是在整个列搜索,只要prod_name中包含了所搜索的字符就可以了,而LIKE如果不用通配符,那么要求prod_name与搜索的字符要完全匹配:也就是说下面的例子,需要使用 LIKE 'JetPack 1000'才可以适配搜索到. 2 使用or进行匹配搜索,可以搜索两个条件,也可以连接多个条件: 3 匹配几个字符之一://这个的意思是说,匹配1 Ton 或者 2 Ton 或者 3 Ton 但是如果写成下面这样

mysql正则表达式及应用

mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个逗号前的数字范围为3-5之间,第三个逗号前的数字的范围为3-5之间,第10个逗号前的数字范围为3-5之间,其余的都为1-5之间... 则sql语句可以这么写: SELECT * FROM tb WHERE t1 REGEXP '^[3-5],[1-5],[3-5],[1-5],[1-5],[1-5]

DB-MySQL:MySQL 正则表达式

ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了

使用MySQL正则表达式 __MySQL必知必会

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持多数正则表达式实现的一个很小的子集. ---------------------- 9.2.1  基本字符匹配 REGEXP后所跟的东西作为正则表达式处理. SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000'ORDER BY prod

MySQL正则表达式 REGEXP详解

在开始这个话题之前我们首先来做一个小实验,比较一下REGEXP和Like他们两个哪个效率高,如果效率太低,我们就没有必要做过多的研究了,实验的代码如下:<?phpRequire("config.php");//函数:计时函数//用法:Echo Runtime(1);Function Runtime($mode=0){    Static $s;    IF(!$mode){        $s=microtime();        Return;    }    $e=micr

Mysql正则表达式基本字符类的匹配和多个实例的匹配

例子:  只打印包含数字的 这里的\\是转义字符  去掉\\不加括号也是对的 这只是小细节- -   个人认为表达[0-9]或者[\\.] 用一个表达或意思的'|'更为清楚 虽然是等价的- - 当然这里只是很基本的正则表达式  经常遇到很多更奇怪的需求  所以不要陷入代码细节吧  知道思路 等到需要用到的时候 去https://dev.mysql.com/doc/refman/5.7/en/查找相关资料或者谷歌别人是如何应用的 命令  真正急用的那个时候你将无比的强大 本文参考mysql必知必会

MySQL 正则表达式(待更新……)

在MySQL中,使用REGEXP关键字来匹配查询正则表达式,其基本形式如下: 字段名 REGEXP '匹配方式' 模式字符 含义              使用举例 ^ 匹配开头           SELECT `books` FROM `tb_name` WHERE `books` REGEXP '^php'; $ 匹配结尾           SELECT `books` FROM `tb_name` WHERE `books` REGEXP 'php$'; . 匹配任意一个字符    

使用MySQL正则表达式查询

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. REGEXP后所跟的东西作为正则表达式处理. 代码 SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; ------返回------ +------------------------+ | prod_name | +------------------------+ | Jet

MySQL正则表达式

正则表达式是用来匹配文本的特殊的串(字符集和).比如从文本文件中提取电话号码. 基本字符匹配 SELECT name FROM Customer WHERE name REGEXP 'li' LIKE与REGEXP之间的重要差别 SELECT Age FROM Customer WHERE Age REGEXP '16' SELECT Age FROM Customer WHERE Age LIKE'1' 如果执行这两个语句,LIKE不返回数据,REGEXP返回一行 LIKE匹配整个列,如果被匹