SQL Server中的模式匹配电子邮件地址

SQL Server中的模式匹配电子邮件地址,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我们的数据库中有欺诈性的电子邮件,我们正试图发出警报以找到它们。我们获得的电子邮件地址的一些示例: addisonsdsdsdcfsd@XXXX.com agustinasdsdfdf@XXXX.com 我希望查询搜索: 辅音模式和模式长度>4个字符 这是我到目前为止得到的,我不知道如何让它搜索字符串的长度。现在,它捕捉的地址甚至有两个辅音背靠背,我想避免,因为它捕捉的电子邮件像bobsaget@xxxx.com. select * from recips where address like

我们的数据库中有欺诈性的电子邮件,我们正试图发出警报以找到它们。我们获得的电子邮件地址的一些示例:

addisonsdsdsdcfsd@XXXX.com
agustinasdsdfdf@XXXX.com

我希望查询搜索:
辅音模式和模式长度>4个字符

这是我到目前为止得到的,我不知道如何让它搜索字符串的长度。现在,它捕捉的地址甚至有两个辅音背靠背,我想避免,因为它捕捉的电子邮件像bobsaget@xxxx.com.

select * from recips
where address like like '%[^aeiou]@%'
更新

我想对我要查找的内容有一些误解,这不是一个验证电子邮件的查询,我们只是试图在注册中发现欺诈电子邮件的模式

我们正在搜索除此之外的其他条件,例如DateLastOpen/clicked,但是为了保持问题的简单性,我只附加了搜索模式的字符串。我们不会给任何已经硬弹跳超过一次的人发邮件。然而,这些电子邮件尤其是机器人,它们仍然能够找到点击/打开的方式,并且不会硬反弹。它们还来自特定的IP块集,其中第一个八位组相同,而这些IP块不同


这绝不是我们的第一道防线,这只是一道通缉线,以确保我们抓住任何从裂缝中溜走的东西bobsaget@xxxxx.com因为它包含与
[^aeiouy]@
匹配的t@,因为
[]
仅匹配1个字符,除非您这样量化它:
[^aeiouy]{4,}@

也许这是可行的,但我从谷歌搜索SQL Server中的
WHERE
子句中使用Regex得到的信息是,您需要定义一个用户定义的函数来实现这一点。如果这太麻烦了,也许这样做可以达到目的:

WHERE address LIKE '%[^aeiouy][^aeiouy][^aeiouy][^aeiouy]@%'

旁注,对我来说只有4个似乎很严格,我知道海因希是一个有效名字的语言。所以我想我会选择6个或更多,在这种情况下,可能是
[^aeiouy]{6,}@
或者在上面的查询中重复
[^aeiouy]
第6部分。

我不认为你可以通过如此任意的方式使电子邮件地址无效-如果我的电子邮件地址是RobertGriffinXXV@msn.com? 您应该通过向电子邮件地址发送单击链接来验证电子邮件地址。如果他们没有点击它(或者它反弹!),那么它是无效的。
lynyrdskynyrd@XXX.com
将是一个很好的例子,说明为什么匹配辅音不是一个好主意这些无效的电子邮件地址是如何进入您的数据库的?在您将无效电子邮件转储到数据库之前,捕获这些电子邮件的位置非常重要。SQL Server并不是你能得到的最好的垃圾邮件过滤方式。也不是很划算。你为什么不通过向他们发送电子邮件来验证电子邮件,并在他们单击发送到该电子邮件地址的唯一过期链接后创建一个激活过程。然后根据到期限制内未激活的帐户清理表。此链接可能会帮助您。。。[ [1]: