MySQL - 正则表达式


您已经看到 MySQL 模式与LIKE ...%匹配。MySQL 支持另一种基于正则表达式和REGEXP运算符的模式匹配操作。如果您了解 PHP 或 PERL,那么您很容易理解,因为这种匹配与编写正则表达式脚本相同。

以下是模式表,可以与REGEXP运算符一起使用。

图案 模式匹配什么
^ 字符串的开头
$ 字符串结尾
任意单个字符
[...] 方括号之间列出的任何字符
[^...] 方括号中未列出的任何字符
p1|p2|p3 交替;匹配任何模式 p1、p2 或 p3
* 前面元素的零个或多个实例
+ 前一元素的一个或多个实例
{n} 前一个元素的 n 个实例
{m,n} 前一个元素的 m 到 n 个实例

例子

现在根据上表,您可以设置各种类型的 SQL 查询来满足您的要求。在这里,我列出一些,供大家理解。

假设我们有一个名为person_tbl的表,它有一个名为name的字段-

查询以查找所有以'st'开头的名称-

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

查询查找所有以'ok'结尾的名称-

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

查询查找所有包含“mar”的名称-

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

查询查找以元音开头并以“ok”结尾的所有名称-

mysql> SELECT FirstName FROM intque.person_tbl WHERE FirstName REGEXP '^[aeiou].*ok$';