当前位置:   article > 正文

【力扣白嫖日记】SQL

【力扣白嫖日记】SQL

前言

练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。

今日题目:

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

列名类型
user_idint
namevarchar
mailvarchar

user_id 是该表的主键(具有唯一值的列)。该表包含了网站已注册用户的信息。有一些电子邮件是无效的。

编写一个解决方案,以查找具有有效电子邮件的用户。
一个有效的电子邮件具有前缀名称和域,其中:

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

以任何顺序返回结果表。


我那不值一提的想法:

首先梳理表内容,题干给了一张用户表,记录了用户id,姓名,邮箱,其次分析需求,需要找到有效的电子邮箱,其中有效的电子邮箱前缀是一个字符串,我的第一个想法是用like将其连接起来,但实际上运行不出来结果,看了题解发现我们需要用到正则表达式,也就是用regexp或者是rlike来匹配正则表达式。

  • 正则表达式的相关功能
    • ^ :表示一个字符串的开头
    • []:表示其中的任意字符范围
    • $:表示一个字符串或行的结尾
    • \ :但实际在SQL的正则表达式中有的特殊符号需要加两条\才能正确转义,比如.,题干中加\不行,得加\
    • *:表示重复前面字符任意次数

这道题整体邮箱就三个部分:
1.以字母开头 [^a-zA-z]
2.字母或是数字或是".“,”_“,”-"作为中间的字符串,因为这三个符号在SQL里面都有特殊用途,所以需要加上\对其进行转义,显示字符原本的样子。[a-zA-z0-9\\.\\-\\_]*
3.以@leetcode结尾。@leetcode\\.com$

select user_id,name,mail
from Users
where mail rlike "^[a-zA-Z][a-zA-Z0-9\\_\\-\\.]*@leetcode\\.com$"
  • 1
  • 2
  • 3

结果:

在这里插入图片描述

总结:

能运行就行。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/opred/article/detail/61080
推荐阅读
相关标签
  

闽ICP备14008679号