-4

Using SQL only, is there a way to query all values that are emails from a column of misc data? I tried like '%@%', but there could be texts like this: Fort Knox @ Room 123.

Edit: Regex is unavailable. I've also tried like '%@%.%' but did not cover cases with spaces.

4

4 回答 4

1

这是给你的SQLFiddle

 SELECT *
  FROM TABLENAME
  WHERE email LIKE '%@%.%'
    AND email NOT LIKE '% %';
于 2013-07-29T18:20:02.563 回答
0

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

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

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

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

于 2013-07-29T18:33:34.473 回答
0

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

select * from whatever
where dbo.IsThisAnEmailAddress(myColumn) = 1
于 2013-07-29T18:16:42.780 回答
0

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

于 2013-07-29T18:17:33.817 回答