sql >> Databasteknik >  >> RDS >> Sqlserver

TSQL e-postvalidering (utan regex)

Mycket grundläggande skulle vara:

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

Detta matchar allt med ett @ i mitten, föregås av minst ett tecken, följt av minst två, en punkt och minst två för toppdomänen.

Du kan skriva mer LIKE mönster som gör mer specifika saker, men du kommer aldrig att kunna matcha allt som kan vara en e-postadress samtidigt som du inte släpper igenom saker som inte är det. Även med reguljära uttryck har du svårt att göra det rätt. Dessutom matchar även matchning enligt själva bokstäverna i RFC adresskonstruktioner som inte kommer att accepteras/användas av de flesta e-postsystem.

Att göra detta på databasnivå är kanske fel tillvägagångssätt ändå, så en grundläggande förnuftskontroll enligt ovan kan vara det bästa du kan få prestandamässigt, och att göra det i en applikation kommer att ge dig mycket större flexibilitet.



  1. Släpp alla tabeller vars namn börjar med en viss sträng

  2. [Video] Introduktion till JSON-datatyper i PostgreSQL

  3. Implementera en Multi-Datacenter Setup för PostgreSQL - Del två

  4. Steg för steg R12.2.6 EBS-installation på Virtual Box