sql >> Databáze >  >> RDS >> Sqlserver

Ověření e-mailu TSQL (bez regulárního výrazu)

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.



  1. Jak přejmenovat název sloupce v SQL?

  2. Špinavá tajemství výrazu CASE

  3. Neo4j - Vytvořte omezení pomocí Cypher

  4. Jak zachytit a analyzovat události SQL Server