Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Walidacja e-mail TSQL (bez wyrażenia regularnego)

Bardzo podstawowe byłoby:

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 dopasowuje wszystko z @ w środku, poprzedzonym co najmniej jednym znakiem, po którym następują co najmniej dwa, kropka i co najmniej dwa dla TLD.

Możesz pisać więcej LIKE wzorce, które robią bardziej konkretne rzeczy, ale nigdy nie będziesz w stanie dopasować wszystkiego, co może być adresem e-mail, nie przepuszczając jednocześnie rzeczy, które nie są. Nawet w przypadku wyrażeń regularnych trudno jest zrobić to dobrze. Dodatkowo, nawet dopasowanie według samych liter RFC dopasowuje konstrukcje adresów, które nie będą akceptowane/używane przez większość systemów pocztowych.

Wykonanie tego na poziomie bazy danych i tak może być złym podejściem, więc podstawowe sprawdzenie poprawności, jak wskazano powyżej, może być najlepszym, jaki możesz uzyskać pod względem wydajności, a wykonanie tego w aplikacji zapewni znacznie większą elastyczność.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz profil poczty bazy danych (SSMS)

  2. Jak TRY_CAST() działa w SQL Server

  3. Zwróć listę schematów partycji w SQL Server (T-SQL)

  4. Korzystanie z PIVOT w SQL Server 2008

  5. Kod Entity-framework działa wolno przy wielokrotnym użyciu funkcji Include()