【问题标题】:How to query for only email values? [closed]如何仅查询电子邮件值? [关闭]
【发布时间】:2013-07-29 18:14:19
【问题描述】:

仅使用 SQL,有没有一种方法可以查询来自杂项数据列的所有电子邮件值? 我试过like '%@%',但可能会有这样的文字:Fort Knox @ Room 123

编辑:正则表达式不可用。 我也试过like '%@%.%',但没有用空格覆盖。

【问题讨论】:

标签: sql plsql


【解决方案1】:

这里是SQLFiddle

 SELECT *
  FROM TABLENAME
  WHERE email LIKE '%@%.%'
    AND email NOT LIKE '% %';

【讨论】:

  • 这也是我得出的最终结论。
  • 但如果我有电子邮件 ID,这将不起作用。 somu_som@gmail.c
【解决方案2】:

如果您不介意使用 CLR 函数,我建议您编写一个 .NET 方法,该方法使用正确的正则表达式(您可以在网上找到各种)来验证电子邮件地址,然后将该函数作为您的一部分调用查询。

select * from whatever
where dbo.IsThisAnEmailAddress(myColumn) = 1

【讨论】:

  • 请记住,如果您的数据库中有很多记录,这将会非常缓慢。
【解决方案3】:

我会在您的查询中使用regular expressions 来获取电子邮件。该网站上有大量有效电子邮件正则表达式的链接。

【讨论】:

    【解决方案4】:

    我同意其他人的观点,RegEx 更好,但是,如果不可用,请尝试以下方法

    WHERE fieldName LIKE '%@%' 
          AND fieldName LIKE '%.%' 
          AND charindex(' ',fieldName)=0
    

    这不是很好,也很慢,但应该让你非常接近。 I.E 同时包含 @ 和 .并且没有空格...

    SQLFiddle:http://www.sqlfiddle.com/#!3/5f6d8/1

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 2015-08-24
      • 1970-01-01
      • 2014-02-11
      相关资源
      最近更新 更多