2

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

addisonsdsdsdcfsd@XXXX.com
agustinasdsdfdf@XXXX.com

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

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

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

更新

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

我们正在搜索除此之外的其他标准,例如 datelastopened/clicked,但为了保持问题简单,我只附加了搜索模式的字符串。我们不会向多次硬退信的人邮寄。但是,这些电子邮件尤其是机器人,它们仍然可以找到一种点击/打开方式并且不会硬退回。它们也来自特定的 IP 块组,其中前八位字节相同,而这些 IP 块各不相同。

这绝不是我们的第一道防线,这只是确保我们抓住任何从裂缝中溜走的东西

4

1 回答 1

0

我认为您当前的查询正在查找bobsaget@xxxxx.com因为它包含匹配的t@[^aeiouy]@ ,因为该字符类之间[]仅匹配 1 个字符,除非您像这样量化它:[^aeiouy]{4,}@

也许这行得通,但是我从谷歌搜索得到关于WHERE在 SQL-Server 的子句中使用正则表达式的信息,您需要定义一个用户定义的函数来为您执行此操作。如果这太麻烦了,也许这样做可以解决问题:

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

旁注,对我来说只有 4 个似乎很严格,我知道 Heinsch 是有效名称的语言。因此,我认为我会选择 6 次或更多,在这种情况下,它将是或在上述查询中[^aeiouy]{6,}@重复该部分 6 次。[^aeiouy]

于 2013-09-25T17:18:14.327 回答