首先讲一下模糊查询的知识点:
1、通配符模糊查询(%,_)
"%" 百分号通配符: 表示任何字符出现任意次数 (可以是0次)。
"_" 下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。
例如:
查找一个Users表内以“软件*程****张”为姓名的所有信息
SELECT * from Users where name like '软件_程%张';
2、MySQL基于regexp、rlike的正则匹配查询
参数类型 | 作用 |
^ | 匹配字符串的开始位置,如“^a”表示以字母a开头的字符串。 |
$ | 匹配字符串的结束位置,如“a^”表示以字母a结尾的字符串。 |
. | 这个字符就是英文下的点,它匹配任何一个字符,包括回车、换行等。 |
* | 星号匹配0个或多个字符,在它之前必须有内容。如:select * from table where name regexp 'avb*'(可以命中“avbbbb”) |
+ | 加号匹配1个或多个字符,在它之前也必须有内容。加号跟星号的用法类似,只是星号允许出现0次,加号则必须至少出现一次。 |
? | 问号匹配0次或1次。 |
{n} | 匹配指定n个 |
{n,} | 匹配不少于n个 |
{n,m} | 匹配n-m个 |
详细内容参考此博主的文章
下面为此题答案(可以看官方给出的解析,比较详细):
# Write your MySQL query statement below
select user_id,name,mail
from Users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_./-]*@leetcode\\.com$'