【力扣白嫖日记】SQL

前言

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

今日题目:

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

列名 类型
user_id int
name varchar
mail varchar

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. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-05 07:30:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-05 07:30:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-05 07:30:01       82 阅读
  4. Python语言-面向对象

    2024-02-05 07:30:01       91 阅读

热门阅读

  1. 如何接手一个新系统

    2024-02-05 07:30:01       49 阅读
  2. 【npm】npm install 卡住不动

    2024-02-05 07:30:01       50 阅读
  3. Tomcat环境搭建

    2024-02-05 07:30:01       47 阅读
  4. Vue3中ref与reactive的用法详解——reactive

    2024-02-05 07:30:01       49 阅读
  5. 在建站和小程序方面,公司如何提升客户的体验

    2024-02-05 07:30:01       58 阅读
  6. 微信小程序封装wx.request以及小程序登录

    2024-02-05 07:30:01       57 阅读
  7. 【微信小程序】微信小程序开发:从入门到精通

    2024-02-05 07:30:01       54 阅读