如何仅查询电子邮件值?

时间:2013-07-29 18:14:19

标签: sql plsql

仅使用SQL,有没有办法从一列misc数据中查询所有电子邮件值? 我试过了like '%@%',但可能会出现这样的文字:Fort Knox @ Room 123

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

4 个答案:

答案 0 :(得分:1)

以下是SQLFiddle

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我同意其他人,RegEx更好,但是,如果没有,请尝试以下

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

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

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