其中,“属性名”表示需要查询的字段名称;“匹配方式”表示以哪种方式来匹配查询。“匹配方式”中有很多的模式匹配字符,它们分别表示不同的意思。下表列出了 REGEXP 操作符中常用的匹配方式。
选项
说明
例子
匹配值示例
		 
^
匹配文本的开始字符
'^b' 匹配以字母 b 开头的字符串
book、big、banana、bike  
		 
$
匹配文本的结束字符
'st$' 匹配以 st 结尾的字符串
test、resist、persist  
		 
.
匹配任何单个字符
'b.t' 匹配任何 b 和 t 之间有一个字符
bit、bat、but、bite  
		 
*
匹配零个或多个在它前面的字符
'f*n' 匹配字符 n 前面有任意个字符 f
fn、fan、faan、abcn  
		 
+
匹配前面的字符 1 次或多次
'ba+' 匹配以 b 开头,后面至少紧跟一个 a
ba、bay、bare、battle  
		 
<字符串>
匹配包含指定字符的文本
'fa' 匹配包含‘fa’的文本
fan、afa、faad  
		 
[字符集合]
匹配字符集合中的任何一个字符
'[xz]' 匹配 x 或者 z
dizzy、zebra、x-ray、extra  
		 
[^]
匹配不在括号中的任何字符
'[^abc]' 匹配任何不包含 a、b 或 c 的字符串
desk、fox、f8ke  
		 
字符串{n,}
匹配前面的字符串至少 n 次
'b{2}' 匹配 2 个或更多的 b
bbb、bbbb、bbbbbbb  
		 
字符串
{n,m}   
匹配前面的字符串至少 n 次, 至多 m 次
'b{2,4}' 匹配最少 2 个,最多 4 个 b
bbb、bbbb  
		 
MySQL 中的正则表达式与 Java 语言、PHP 语言等编程语言中的正则表达式基本一致。
	查询以特定字符或字符串开头的记录
字符^用来匹配以特定字符或字符串开头的记录。
	例 1
在 tb_students_info 表中,查询 name 字段以“J”开头的记录,SQL 语句和执行过程如下。
mysql> SELECT * FROM tb_students_info
-> WHERE name REGEXP '^J';
+----+------+------+------+--------+-----------+
| id | name | age  | sex  | height | course_id |
+----+------+------+------+--------+-----------+
|  4 | Jane |   22 | 男   |    162 |
3 |
|  5 | Jim  |   24 | 女   |    175 |
2 |
|  6 | John |   21 | 女   |    172 |
4 |
+----+------+------+------+--------+-----------+
3 rows in set (0.01 sec)
	例 2
在 tb_students_info 表中,查询 name 字段以“Ji”开头的记录,SQL 语句和执行过程如下。
mysql> SELECT * FROM tb_students_info
-> WHERE name REGEXP '^Ji';
+----+------+------+------+--------+-----------+
| id | name | age  | sex  | height | course_id |
+----+------+------+------+--------+-----------+
|  5 | Jim  |   24 | 女   |    175 |
2 |
+----+------+------+------+--------+-----------+
1 row in set (0.00 sec)
	查询以特定字符或字符串结尾的记录
字符$用来匹配以特定字符或字符串结尾的记录。
	例 3
在 tb_students_info 表中,查询 name 字段以“y”结尾的记录,SQL 语句和执行过程如下。
mysql> SELECT * FROM tb_students_info
-> WHERE name REGEXP 'y$';
+----+-------+------+------+--------+-----------+
| id | name  | age  | sex  | height | course_id |
+----+-------+------+------+--------+-----------+
|  1 | Dany  |   25 | 男   |    160 |
1 |
|  3 | Henry |   23 | 女   |    185 |
1 |
|  7 | Lily  |   22 | 男   |    165 |
4 |
+----+-------+------+------+--------+-----------+
3 rows in set (0.00 sec)
	例 4
在 tb_students_info 表中,查询 name 字段以“ry”结尾的记录,SQL 语句和执行过程如下。