Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

TSQL-E-Mail-Validierung (ohne Regex)

Sehr basic wä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

Dies entspricht allem mit einem @ in der Mitte, dem mindestens ein Zeichen vorangestellt ist, gefolgt von mindestens zwei, einem Punkt und mindestens zwei für die TLD.

Sie können mehr LIKE schreiben Muster, die spezifischere Dinge tun, aber Sie werden niemals alles abgleichen können, was eine E-Mail-Adresse sein könnte, ohne Dinge durchgehen zu lassen, die keine sind. Selbst mit regulären Ausdrücken fällt es Ihnen schwer, es richtig zu machen. Darüber hinaus stimmt sogar der Abgleich nach den Buchstaben des RFC mit Adresskonstrukten überein, die von den meisten E-Mail-Systemen nicht akzeptiert/verwendet werden.

Dies auf Datenbankebene zu tun, ist vielleicht sowieso der falsche Ansatz, daher ist eine grundlegende Plausibilitätsprüfung wie oben angegeben möglicherweise das Beste, was Sie in Bezug auf die Leistung erreichen können, und wenn Sie dies in einer Anwendung tun, erhalten Sie eine weitaus größere Flexibilität.