Velmi základní by bylo:
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
To odpovídá všemu se znakem @ uprostřed, kterému předchází alespoň jeden znak, za nímž následují alespoň dva, tečka a alespoň dva pro TLD.
Můžete napsat více LIKE
vzory, které dělají specifičtější věci, ale nikdy nebudete schopni porovnat vše, co by mohlo být e-mailovou adresou, a přitom neproklouznout věci, které nejsou. I s regulárními výrazy je těžké to udělat správně. Navíc, dokonce i párování podle samotných písmen RFC odpovídá konstrukcím adres, které většina e-mailových systémů nepřijme/nebude používat.
Dělat to na úrovni databáze je stejně možná špatný přístup, takže základní kontrola zdravého rozumu, jak je uvedeno výše, může být to nejlepší, co můžete dosáhnout z hlediska výkonu, a provedení v aplikaci vám poskytne mnohem větší flexibilitu.