MySQL 正则表达式
你已经了解了使用 LIKE …% 进行MySQL模式匹配。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$';