使用 RegEX (SQL) 进行电子邮件验证

问题描述 投票:0回答:1

我正在尝试使用 RegEX 在 SQL 中验证电子邮件以达到以下标准。

创建一个查询(使用运算符 LIKE)来搜索包含以下内容的所有电子邮件地址:

  1. 只有一个符号“@”
  2. 至少一个符号“.”
  3. 如果只有一个“。”符号 它应该在符号“@”之后(而不是之前)
  4. 至少6个字符
  5. 符号“.”和“@”不能相邻
  6. 符号“.”或“@”不得位于地址的开头或结尾 此外,电子邮件地址不得包含以下符号:“=”、“_”、“-”、“+”、“&”、“<”, “>”或“,”。

我尝试编写一个查询,除了“至少 6 个字符条件”之外,我已经考虑了上述所有要点。我得到了结果,但所有结果都显示为无效,我不知道为什么。 下面是我写的查询:

SELECT EmailAddress CASE WHEN EmailAddress Like '%^[A-Za-z0-9._%\-+!#$&/=?^|~]+@[A-Za-z0-9.-]+[.][A-Za-z]+$%' THEN 'Valid' ELSE 'INVALID' END AS valid_email FROM Database Where EmailAddress is not null


sql regex tsql data-cleaning salesforce-marketing-cloud
1个回答
0
投票
LIKE

不处理正则表达式。

我不建议使用以下代码,但它满足您的标准:

SELECT EmailAddress, CASE WHEN ( ( NOT EmailAddress LIKE '%@%@%' ) -- 1 AND ( EmailAddress LIKE '%.%' ) -- 2 AND ( EmailAddress LIKE '%@%.%' ) -- 3 AND ( EmailAddress LIKE '______%' ) -- 4 AND ( NOT ( -- 5 ( EmailAddress LIKE '%@.%' ) OR ( EmailAddress LIKE '%.@%' ) ) ) AND ( NOT ( -- 6(a) ( EmailAddress LIKE '@%' ) OR ( EmailAddress LIKE '.%' ) OR ( EmailAddress LIKE '%@' ) OR ( EmailAddress LIKE '%.' ) ) ) AND ( NOT ( -- 6(b) ( EmailAddress LIKE '%=%' ) OR ( EmailAddress LIKE '%\_%' ESCAPE '\' ) OR ( EmailAddress LIKE '%-%' ) OR ( EmailAddress LIKE '%+%' ) OR ( EmailAddress LIKE '%&%' ) OR ( EmailAddress LIKE '%<%' ) OR ( EmailAddress LIKE '%>%' ) OR ( EmailAddress LIKE '%,%' ) ) ) ) THEN 'Valid' ELSE 'INVALID' END AS valid_email FROM Database Where EmailAddress IS NOT NULL ;

备注:

    =
  • _
    -
    +
    &
    在当地完全有效
  • -
  • 在域部分有效
    如果正确引用,
  • <
  • >
    ,
    在本地有效
    此表达式一般无法正确分类电子邮件地址
  • 没有任何表达式可以先验地确定地址是否实际存在,即使它在语法上是有效的
  • 我用了
  • Database
  • ,因为你用了,但你的意思可能是
    Database.Table
    
        
© www.soinside.com 2019 - 2024. All rights reserved.