Mysqli 简明教程
MySQLi - Regexps
您已使用 LIKE …% 看到 MySQL 模式匹配。MySQL 支持另一种基于正则表达式和 REGEXP 运算符的模式匹配操作。如果您熟悉 PHP 或 PERL,那么对您来说理解起来很简单,因为这种匹配与那些脚本正则表达式非常相似。
以下是可与 REGEXP 运算符一起使用的模式表。
Pattern |
What the pattern matches |
^ |
Beginning of string |
$ |
End of string |
. |
Any single character |
[…] |
方括号内列出的任何字符 |
[^…] |
方括号内未列出的任何字符 |
p1 |
p2 |
p3 |
交替;与模式 p1、p2 或 p3 中的任何一个匹配 |
* |
前一个元素的多个实例 |
+ |
前一个元素的一个或多个实例 |
{n} |
前一个元素的 n 个实例 |
{m,n} |
前一个元素的 m 到 n 个实例 |
Examples
现在,基于上表,您可以设计各种类型的 SQL 查询以满足您的要求。这里我列出一些供您理解。假设我们有一张名为 tutorials_inf 的表,它有一个名为 name 的字段−
查找所有以“sa”开头的名称的查询
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';
示例输出如下所示 −
+----+------+
| id | name |
+----+------+
| 1 | sai |
+----+------+
1 row in set (0.00 sec)
查找所有以“ai”结尾的名称的查询
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';
示例输出如下所示 −
+----+------+
| id | name |
+----+------+
| 1 | sai |
+----+------+
1 row in set (0.00 sec)
查找包含“a”的所有名称的查询
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';
示例输出如下所示 −
+----+-------+
| id | name |
+----+-------+
| 1 | sai |
| 3 | ram |
| 4 | johar |
+----+-------+
3 rows in set (0.00 sec)
查找所有以元音开头的名称的查询
mysql> SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';