1517. 查找拥有有效邮箱的用户

1517. 查找拥有有效邮箱的用户

用户表: Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| name          | varchar |
| mail          | varchar | 
+---------------+---------+
user_id (用户 ID)是该表的主键。
这个表包含用户在某网站上注册的信息。有些邮箱是无效的。

 

写一条 SQL 语句,查询拥有有效邮箱的用户。

有效的邮箱包含符合下列条件的前缀名和域名:

  • 前缀名是包含字母(大写或小写)、数字、下划线 '_'、句点 '.' 和/或横杠 '-' 的字符串。前缀名必须以字母开头。
  • 域名是 '@leetcode.com' 。

按任意顺序返回结果表。

 

查询格式如下所示:

Users
+---------+-----------+-------------------------+
| user_id | name      | mail                    |
+---------+-----------+-------------------------+
| 1       | Winston   | winston@leetcode.com    |
| 2       | Jonathan  | jonathanisgreat         |
| 3       | Annabelle | bella-@leetcode.com     |
| 4       | Sally     | sally.come@leetcode.com |
| 5       | Marwan    | quarz#2020@leetcode.com |
| 6       | David     | david69@gmail.com       |
| 7       | Shapiro   | .shapo@leetcode.com     |
+---------+-----------+-------------------------+

结果表:
+---------+-----------+-------------------------+
| user_id | name      | mail                    |
+---------+-----------+-------------------------+
| 1       | Winston   | winston@leetcode.com    |
| 3       | Annabelle | bella-@leetcode.com     |
| 4       | Sally     | sally.come@leetcode.com |
+---------+-----------+-------------------------+
2 号用户的邮箱没有域名。
5 号用户的邮箱包含非法字符 #。
6 号用户的邮箱的域名不是 leetcode。
7 号用户的邮箱以句点(.)开头。

select 
    user_id,
    name,
    mail
from 
    Users as u
where 
    left(mail,length(mail)-13) REGEXP '^[A-Za-z0-9_.-]*$'
    and
    left(mail,1) REGEXP '^[A-Za-z]'
    and
    right(mail,13) = '@leetcode.com'

 tip:

其中,^表示正则表达式的开头,[A-Za-z0-9_.-]表示匹配字母(大写或小写)、数字、下划线 _、句点.和/或横杠-的任意一个字符,*表示匹配前面的字符集0到多次,最后的$表示正则表达式的结尾。这个正则表达式的意思是:匹配只包含字母(大写或小写)、数字、下划线 _、句点.和/或横杠-的字符串。

posted on 2023-07-04 17:44  HHHuskie  阅读(27)  评论(0编辑  收藏  举报

导航