您已经看到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]';