题目
表: Users
编写一个解决方案,以查找具有有效电子邮件的用户。
一个有效的电子邮件具有前缀名称和域,其中:
- 前缀 名称是一个字符串,可以包含字母(大写或小写),数字,下划线
'_'
,点'.'
和/或破折号'-'
。前缀名称 必须 以字母开头。 -
域 为
'@leetcode.com'
。
以任何顺序返回结果表。
结果的格式如以下示例所示:
示例 1:
解题思路
前置知识
Regexpp()
模糊匹配,包含特定字符串
查找content字段中包含“车友俱乐部”的记录
select * from club_content where content regexp ‘车友俱乐部’
此时的regexp与like的以下用法是等同的
select * from club_content where content like ‘%车友俱乐部%’
模糊匹配,以特定字符串开头
查找content字段中以“车友”开头的记录
select * from club_content where content regexp ‘^车友’
此时的regexp与like的以下用法是等同的
select * from club_content where content like ‘车友%’
模糊匹配,以特定字符串结尾
查找content字段中以“车友”结尾的记录
select * from club_content where content regexp ‘车友$’
此时的regexp与like的以下用法是等同的
select * from club_content where content like ‘%车友’
模糊匹配,或关系
查找content字段中包含“心得”、“分享”或“技术贴”
select * from club_content where content REGEXP ‘心得|分享|技术贴’
模糊匹配,不包含单个字符
查找content字段中不包含“车”字、“友”字的记录
select * from club_content where content REGEXP [^车友]
这个结果跑出来一看大吃一惊,竟然把所有记录给跑出来,这是为什么呢?
因为一旦加了这个方括号"[]",它就把里面的内容拆成单个的字符再匹配,它会逐个字符去匹配判断是不是等于“车”,或者是不是等于“友“,返回的结果是一组0、1的逻辑值。如果想匹配不包含特定字符串,该怎么实现呢?
模糊匹配,不包含特定字符串
查找content字段不包含“车友”字符串的记录
select * from club_content where content not REGEXP ‘车友’
1.题目要求我们 查找具有有效电子邮件的用户,也就是(前缀 名称是一个字符串,可以包含字母(大写或小写),数字,下划线
'_'
,点'.'
和/或破折号'-'
。前缀名称 必须 以字母开头。域 为'@leetcode.com'
。)对于这种题我们可以采用正则表达式进行匹配。2. ^ 匹配以该字符后面的字符开头的字符串,我们应该以字母开头(^[a-zA-Z]),可以包含字母(大写或小写),数字,下划线
'_'
,点'.'
和/或破折号'-'([a-zA-Z0-9_.-]*),
*是一个量词,表示匹配前面的元素零次或多次。3.必须以域结尾域 为
'@leetcode.com',(@leetcode[.]com$),然后我们将三个条件组合在一起就得到了(regexp '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$')这里要注意特殊符号的转义,如果我们将特殊符号放在[]中就不用再进行转义了,否则要在前面加上‘//’。
文章来源:https://www.toymoban.com/news/detail-654972.html
代码实现
select *
from Users
where mail regexp '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$'
测试结果
文章来源地址https://www.toymoban.com/news/detail-654972.html
到了这里,关于SQL-每日一题【1517. 查找拥有有效邮箱的用户】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!