您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL 中使用正则表达式

前面小节介绍过使用 LIKE 模糊包含的字段的结果集,本小节介绍正则表达式相关的基础知识,学习之后,可以使用正则表达式来更加符合需求的字段。

1. 正则表达式中的元字符

2. 使用REGEXP正则表达式

以 student 表为例,使用正则表达式出姓的教师:

SELECT * FROM student WHERE name REGEXP '^王';

结果如下图:

使用正则表达式 name 字段中包含字的数据:

SELECT * FROM student  WHERE name REGEXP '小';

结果如下图:

以 teacher 表为例,使用正则表达式匹配符合邮箱格式的数据:

SELECT * FROM teacher  WHERE email REGEXP '^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$';

结果如下图:

Tips:如上图所示, 其中 ^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 为符合邮箱匹配规则的正则表达式,结果 email 的值如果不满足此正则表达式,则该条数据不会被出来。

3. 小结

本小节介绍了如何使用 REGEXP 正则表达式匹配符合正则表达式的数据,列举了正则表达式的元字符,介绍了在 中正则表达式的基本匹配,需要注意的是正则表达式更多具体知识这里不做详细的介绍,这里主要介绍如何在 语句中如何对字段进行已有的正则表达式正则匹配,下表列举了几个正则表达式:

(1) 11手机号正则表达式:

^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\d{8}$

(2) 域名网址正则表达式

^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$

(3) 日期+时间正则表达式

^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\s+(20|21|22|23|[0-1]\d):[0-5]\d:[0-5]\d$

更多的正则表达式可根据自己的需求来改写。


联系我
置顶