Heel basis zou zijn:
SELECT
EmailAddress,
CASE WHEN EmailAddress LIKE '%[email protected]_%_.__%'
AND EmailAddress NOT LIKE '%[any obviously invalid characters]%'
THEN 'Could be'
ELSE 'Nope'
END Validates
FROM
Table
Dit komt overeen met alles met een @ in het midden, voorafgegaan door ten minste één teken, gevolgd door ten minste twee, een punt en ten minste twee voor de TLD.
Je kunt meer LIKE
write schrijven patronen die meer specifieke dingen doen, maar je zult nooit in staat zijn om alles te matchen dat een e-mailadres zou kunnen zijn zonder dingen te laten glippen die dat niet zijn. Zelfs met reguliere expressies is het moeilijk om het goed te doen. Bovendien komt zelfs matching volgens de letters van de RFC overeen met adresconstructies die door de meeste e-mailsystemen niet worden geaccepteerd/gebruikt.
Dit op databaseniveau doen is misschien sowieso de verkeerde benadering, dus een basissanity-check zoals hierboven aangegeven is misschien wel de beste die je kunt krijgen qua prestaties, en als je het in een applicatie doet, krijg je veel meer flexibiliteit.