MySQL REGEXP:查询以特定字符或字符串开头的记录

其中,属性名表示需要查询的字段名称;匹配方式表示以哪种方式来匹配查询。匹配方式中有很多的模式匹配字符,它们分别表示不同的意思。下表列出了 REGEXP 操作符中常用的匹配方式。 选项说明例子匹配值示例 ^ 匹配文本的开始字符 ^b 匹配以字母 b 开头的字

其中,“属性名”表示需要查询的字段名称;“匹配方式”表示以哪种方式来匹配查询。“匹配方式”中有很多的模式匹配字符,它们分别表示不同的意思。下表列出了 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 语句和执行过程如下。

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐