首页 > 数据库 >查找拥有有效邮箱的用户(sql练习)

查找拥有有效邮箱的用户(sql练习)

时间:2024-06-16 15:58:46浏览次数:13  
标签:字符 匹配 正则表达式 查找 +---------+-----------+-------------------------+ sql 邮箱 com leet

表: 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   | [email protected]    |
| 2       | Jonathan  | jonathanisgreat         |
| 3       | Annabelle | [email protected]     |
| 4       | Sally     | [email protected] |
| 5       | Marwan    | quarz#[email protected] |
| 6       | David     | [email protected]       |
| 7       | Shapiro   | [email protected]     |
+---------+-----------+-------------------------+
输出:
+---------+-----------+-------------------------+
| user_id | name      | mail                    |
+---------+-----------+-------------------------+
| 1       | Winston   | [email protected]    |
| 3       | Annabelle | [email protected]     |
| 4       | Sally     | [email protected] |
+---------+-----------+-------------------------+
解释:
用户 2 的电子邮件没有域。 
用户 5 的电子邮件带有不允许的 '#' 符号。
用户 6 的电子邮件没有 leetcode 域。 
用户 7 的电子邮件以点开头。

本题考查正则表达式的应用。

常用的正则表达式字符和特殊字符有:

①普通字符:表示匹配该字符本身,如a表示匹配字母"a"。

②元字符:具有特殊含义的字符,如 . 表示匹配除换行符以外的任意字符。

③字符类:用[ ]表示,表示匹配括号内的任意一个字符,如[abc]表示匹配字符"a"、“b"或"c”。

④反义字符类:用[^]表示,表示匹配除括号内字符以外的任意字符,如[^abc]表示匹配除"a"、“b”、"c"以外的任意字符。

⑤重复字符:用*、+、?表示,分别表示匹配前一个字符0次或多次、1次或多次、0次或1次。

⑥边界匹配:用^、$表示,分别表示匹配字符串的开头和结尾。

⑦分组:用()表示,可以将多个字符组合为一个整体,如(ab)+表示匹配"ab"、“abab”等。

⑧转义字符:用\表示,可以将特殊字符转义为普通字符,如\.表示匹配字符"."。


正则表达式的用法有:

匹配:使用match()函数在字符串中查找匹配正则表达式的部分,并返回一个包含匹配结果的数组。

查找:使用search()函数在字符串中查找匹配正则表达式的部分,并返回第一个匹配的位置。

替换:使用replace()函数将字符串中匹配正则表达式的部分替换为指定的内容。

分割:使用split()函数根据正则表达式将字符串分割为多个部分,并返回一个数组。

其他用法:

量词:用来指定前面的字符或字符类的重复次数。

常用的量词有:

*:匹配前一个字符0次或多次。

+:匹配前一个字符1次或多次。

?:匹配前一个字符0次或1次。

{n}:匹配前一个字符恰好n次。

{n,}:匹配前一个字符至少n次。

{n,m}:匹配前一个字符至少n次,最多m次。

特殊字符:

.:匹配除换行符以外的任意字符。

\d:匹配数字字符。

\D:匹配非数字字符。

\w:匹配字母、数字、下划线字符。

\W:匹配非字母、数字、下划线字符。

\s:匹配空白字符(空格、制表符、换行符等)。

\S:匹配非空白字符。

\b:匹配单词边界。

\B:匹配非单词边界。

分组和引用:

():将多个字符组合为一个整体。

(?:):非捕获分组,用于只匹配但不捕获。

\1、\2、…:引用前面的分组,用于匹配相同的内容。

断言:

(?=...):正向肯定前瞻,用于匹配满足某个条件的位置。

(?!...):正向否定前瞻,用于匹配不满足某个条件的位置。

(?<=...):反向肯定后顾,用于匹配位于某个条件之后的位置。

(?<!...):反向否定后顾,用于匹配不位于某个条件之后的位置。

select
    *
from
    users
where
    mail REGEXP "^([a-z|A-Z])[a-z|A-Z|0-9|_|\.|\/|\-]*(@leetcode[\.]com)$"

标签:字符,匹配,正则表达式,查找,+---------+-----------+-------------------------+,sql,邮箱,com,leet
From: https://blog.csdn.net/JYXCCC/article/details/139576143

相关文章

  • Navicat和SQLynx产品功能比较一(整体比较)
    Navicat和SQLynx都是数据库管理工具,在过去的二十年中,国内用户主要是使用Navicat偏多,一般是个人简单开发需要,数据量一般不大,开发相对简单。SQLynx是最近几年的数据库管理工具,Web开发,桌面版是Electron封装,主要针对企业级客户设计,针对大型企业数据规模比较大,个人用户也可以使用。......
  • 《软件性能测试分析与调优实践之路》第二版-手稿节选-Mysql数据库性能定位与分析
    在做MySQL数据的性能定位前,需要先知道MySQL查询时数据库内部的执行过程。只有弄清SQL的执行过程,才能对执行过程中的每一步的性能做定位分析。如图6-2-1所示。图6-2-1从图中可以看到,当查询出数据以后,会将数据先返回给执行器,此时执行器先将结果写到查询缓存里面,这样在下次查询相......
  • 1832javaERP管理系统之车间计划管理Myeclipse开发mysql数据库servlet结构java编程计算
    一、源码特点 javaerp管理系统之车间计划管理是一套完善的web设计系统,对理解JSPjava编程开发语言有帮助采用了serlvet设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。......
  • (必读pdf)SQL经典实例(第2版) ([美] 安东尼 • 莫利纳罗 [澳] 罗伯特 • 德 • 格拉夫 [格
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoSQL基础与高级特性:概述SQL的基本语法和常用操作,并介绍一些高级特性,如窗口函数、递归查询等。统计分析应用:展示如何使用SQL进行统计分析,包括数据的汇总、分组、排序以及趋势分析等。报表制作技巧:介绍如何使用SQL......
  • (带pdf和阅读笔记)SQL学习指南 ([美]博利厄(Alan Beaulieu), 张伟超, 林青松)
    书:pan.baidu.com/s/1tIHXj9HmIYojAHqje09DTA?pwd=jqso提取码:jqsoSQL基础与概述:介绍SQL的起源、发展以及在数据库管理中的重要地位,让读者对SQL有一个整体的了解。数据查询基础:详细讲解SELECT语句的基本语法,包括选择列、过滤行等,帮助读者掌握SQL查询的基本方法。数据操作与修改......
  • Mysql
    数据库原理与应用DDL和DML练习创建一个名为students的表,包含id(主键,自增长),name(字符串类型,长度为````````20),age(整数类型)和class(字符串类型,长度为20)。CREATETABLEstudents(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(20),ageINT,classVARCHAR(20));向s......
  • 达梦数据库常用的sql语句
    1、SQL的分类数据定义语言(DDL-DataDefinitionLanguage):用于定义数据库结构(模式、表、视图、索引等),DDL会自动提交事务。常见命令包括:CREATE:创建数据库对象(例如,表、视图、索引等)。ALTER:修改数据库对象的结构。DROP:删除数据库对象。TRUNCATE:删除表中的所有数据,但......
  • mysql中社区版如何查看进程中sql
    在MySQL中,你可以使用SHOWPROCESSLIST命令来查看当前正在运行的进程以及它们正在执行的SQL语句(如果有的话)。不过,默认情况下,SHOWPROCESSLIST可能不会显示完整的SQL语句,特别是当SQL语句非常长时。以下是如何在MySQL中查看进程及其SQL语句的方法:登录到MySQL:使用命令行客户端或......
  • mysql中社区版如何杀死锁
    在MySQL中,特别是社区版,当遇到锁问题时,你可能需要杀死锁定资源的进程来解决问题。以下是一些步骤和相关信息,用于在MySQL中杀死锁定的进程:查看当前进程:首先,你需要查看当前MySQL中的所有进程,以确定哪些进程可能正在锁定资源。你可以使用以下SQL命令来查看:sqlSHOWFULLPROCESS......
  • Springboot计算机毕业设计远程在线诊疗系统小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,远程医疗作为一种新兴的医疗模式,正逐渐受到广泛关注和认可。特别是在疫情等突发公共卫生事件的影响下,远程在线诊疗系统小程序......