MySQLi - Regexps

您已经看到MySQLi模式与 LIKE ...%匹配. MySQLi支持基于正则表达式和 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]';