MySQLi – 正则表达式

MySQLi – 正则表达式


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

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

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

例子

现在基于上表,您可以设置各种类型的 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]';

觉得文章有用?

点个广告表达一下你的爱意吧 !😁