MySQL REGEXP运算符是什么以及它如何处理模式匹配
MySQL支持基于正则表达式和 REGEXP 运算符的另一种模式匹配操作。下表列出了可与 REGEXP 运算符一起使用以处理模式匹配的模式。
Pattern | **模式匹配的内容 ** |
---|---|
^ |
字符串开头 |
$ |
字符串结尾 |
. |
任何单个字符 |
[...] |
方括号中列出的任何字符 |
[^...] |
方括号中未列出的任何字符 |
p1|p2|p3 |
选择,匹配p1、p2或p3中的任何一个模式 |
* |
前面元素的零个或多个实例 |
\+ |
前面元素的一个或多个实例 |
{n} |
前面元素的n个实例 |
{m,n} |
前面元素的m到n个实例 |
阅读更多:MySQL 教程
例子
为了说明使用 REGEXP ,我们使用具有下列数据的“Student_info”表:
mysql> Select * from Student_info;
+------+---------+------------+------------+
| id | Name | Address | Subject |
+------+---------+------------+------------+
| 101 | YashPal | Amritsar | History |
| 105 | Gaurav | Chandigarh | Literature |
| 130 | Ram | Jhansi | Computers |
| 132 | Shyam | Chandigarh | Economics |
| 133 | Mohan | Delhi | Computers |
+------+---------+------------+------------+
5 rows in set (0.00 sec)
现在,以下是使用 REGEXP 从上表中查找“Name”模式的一些查询:
mysql> Select Name from student_info WHERE Name REGEXP '^Y';
+---------+
| Name |
+---------+
| YashPal |
+---------+
1 row in set (0.11 sec)
上面的查询将找到所有以“Y”开头的名称。
mysql> Select name from student_info WHERE Name REGEXP 'am$';
+-------+
| name |
+-------+
| Ram |
| Shyam |
+-------+
2 rows in set (0.00 sec)
上面的查询将找到所有以“am”结尾的名称。
mysql> Select name from student_info WHERE Name REGEXP 'av';
+--------+
| name |
+--------+
| Gaurav |
+--------+
1 row in set (0.00 sec)
上面的查询将找到所有包含“av”的名称。
mysql> Select name from student_info WHERE Name REGEXP '^[aeiou]|am$';
+-------+
| name |
+-------+
| Ram |
| Shyam |
+-------+
2 rows in set (0.00 sec)
上面的查询将找到所有以元音字母开头且以“am”结尾的名称。