Leetcode:1517. 查找拥有有效邮箱的用户超详细!

表: Users

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| user_id       | int     |
| name          | varchar |
| mail          | varchar |
+---------------+---------+
user_id 是该表的主键(具有唯一值的列)。
该表包含了网站已注册用户的信息。有一些电子邮件是无效的。

编写一个解决方案,以查找具有有效电子邮件的用户。

一个有效的电子邮件具有前缀名称和域,其中:

  1.  前缀 名称是一个字符串,可以包含字母(大写或小写),数字,下划线 '_' ,点 '.' 和/或破折号 '-' 。前缀名称 必须 以字母开头。
  2.  为 '@leetcode.com' 。

以任何顺序返回结果表。

结果的格式如以下示例所示:

示例 1:

输入:
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 的电子邮件以点开头。

这段代码使用了 SQL 中的 REGEXP 和 REGEXP_MATCHES() 函数来实现复杂的模式匹配,确保邮件地址满足特定格式要求。让我详细解释一下:

# 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$'
  1. SQL查询语句:

    • SELECT user_id, name, mail: 查询语句选择了用户表中的用户ID、姓名和邮箱地址。
    • FROM Users: 从名为 Users 的表中查询数据。
    • WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*\\@leetcode\\.com$': 这是一个过滤条件,使用了 REGEXP 操作符来匹配符合特定邮件格式的邮箱地址。
  2. 正则表达式解释:

    • ^: 表示匹配字符串的开头。
    • [a-zA-Z]: 第一个字符必须是字母。
    • [a-zA-Z0-9_.-]*: 后续字符可以是字母、数字、下划线、点或破折号,可以重复零次或多次。
    • \\@leetcode\\.com$: 以 @leetcode.com 结尾的字符串。注意,在 SQL 中使用正则表达式时,通常需要双反斜杠 \\ 来转义特殊字符。
  3. 使用的函数方法:

    • REGEXP 操作符: 用于判断某个字段是否符合指定的正则表达式模式。
    • REGEXP_MATCHES() 函数: 虽然上面的示例中没有直接使用 REGEXP_MATCHES(),但它可以用于从字段中提取符合正则表达式模式的子串,返回一个数组。dad

 建议了解一下sql常用的正则表达式!!!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值