sql >> Database teknologi >  >> RDS >> Sqlserver

TSQL-e-mail-validering (uden regex)

Meget grundlæggende ville være:

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

Dette matcher alt med et @ i midten, efterfulgt af mindst et tegn, efterfulgt af mindst to, en prik og mindst to for TLD'en.

Du kan skrive mere LIKE mønstre, der gør mere specifikke ting, men du vil aldrig være i stand til at matche alt, hvad der kunne være en e-mail-adresse, mens du ikke slipper igennem ting, der ikke er. Selv med regulære udtryk har du svært ved at gøre det rigtigt. Derudover matcher selv matchning ifølge selve bogstaverne i RFC adressekonstruktioner, som ikke vil blive accepteret/brugt af de fleste e-mail-systemer.

At gøre dette på databaseniveau er måske alligevel den forkerte tilgang, så et grundlæggende fornuftstjek som angivet ovenfor kan være det bedste, du kan få ydeevnemæssigt, og at gøre det i en applikation vil give dig langt større fleksibilitet.



  1. SQL-sporing, 10046 hændelse i Oracle:trcsess, tkprof-værktøj

  2. Skjult funktion:Træk og slip adgangsobjekter mellem filer

  3. Kopier tabeller fra en database til en anden i SQL Server

  4. Nogle ulemper ved at bruge datatypetekst til lagring af strenge?