sql >> Database >  >> RDS >> Sqlserver

TSQL-e-mailvalidatie (zonder regex)

Heel basis zou zijn:

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

Dit komt overeen met alles met een @ in het midden, voorafgegaan door ten minste één teken, gevolgd door ten minste twee, een punt en ten minste twee voor de TLD.

Je kunt meer LIKE write schrijven patronen die meer specifieke dingen doen, maar je zult nooit in staat zijn om alles te matchen dat een e-mailadres zou kunnen zijn zonder dingen te laten glippen die dat niet zijn. Zelfs met reguliere expressies is het moeilijk om het goed te doen. Bovendien komt zelfs matching volgens de letters van de RFC overeen met adresconstructies die door de meeste e-mailsystemen niet worden geaccepteerd/gebruikt.

Dit op databaseniveau doen is misschien sowieso de verkeerde benadering, dus een basissanity-check zoals hierboven aangegeven is misschien wel de beste die je kunt krijgen qua prestaties, en als je het in een applicatie doet, krijg je veel meer flexibiliteit.



  1. Bepaal welk MySQL-configuratiebestand wordt gebruikt

  2. Cross Domain SQL Server-aanmeldingen met Windows-verificatie

  3. MySQL KOLOM TOEVOEGEN

  4. Is er een manier om de JBoss-verbindingspool opnieuw te verbinden met Oracle wanneer de verbindingen slecht worden?