Motif correspondant à l'adresse e-mail dans SQL Server

Nous recevons des courriels frauduleux dans notre database et essayons de faire une alerte pour les find. Quelques exemples d'adresses e-mail que nous recevons:

[email protected]
[email protected]

Je souhaite que la requête search:
model de consonnes et longueur du motif> 4 caractères

Voici ce que j'ai jusqu'ici, je ne peux pas comprendre comment l'get pour searchr la longueur de la string. À l'heure actuelle, il s'agit d'adresses qui ont deux consonnes consécutives, que je veux éviter parce que je reçois des courriels comme [email protected].

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

METTRE À JOUR

Je pense qu'il y a une certaine incompréhension de ce que j'essaie de find, ce n'est pas une requête pour la validation des courriels, nous essayons simplement de repérer les tendances dans nos inscriptions pour les courriels frauduleux.

nous recherchons d'autres critères à part cela, tels que datelastopened / clicked, mais par soucis de garder la question simple, je n'ai attaché que la string qui cherche le pattern. Nous n'effectuons aucun envoi par courrier à qui que ce soit. Cependant, ces courriels en particulier sont des bots qui trouvent toujours un moyen de cliquer / ouvrir et ne pas hardbounce. Ils proviennent également d'sets particuliers de blocs IP où les premiers octets sont les mêmes et ces blocs IP varient.

ce n'est en aucun cas notre première ligne de défense, c'est juste un fourre-tout pour s'assurer que nous attrapons tout ce qui glisse à travers les fissures

Je pense que votre requête actuelle trouve [email protected] car elle contient t @ qui correspond à [^aeiouy]@ car cette class de caractères entre [] ne correspond qu'à 1 caractère sauf si vous le quantifiez comme [^aeiouy]{4,}@ : [^aeiouy]{4,}@

Peut-être que cela fonctionne, mais ce que je reçois de Googling sur l'utilisation de Regex dans la clause WHERE dans SQL-Server, vous devez définir une fonction définie par l'user pour le faire pour vous. Si c'est trop lourd, peut-être faire quelque chose comme ça ferait l'affaire:

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

Côté note, juste 4 me semble ssortingct, je connais des langues où Heinsch serait un nom valide. Donc je voudrais aller 6 ou plus je pense, auquel cas ce serait [^aeiouy]{6,}@ ou répéter la partie [^aeiouy] 6 fois dans la requête ci-dessus.