Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Validação de e-mail TSQL (sem regex)


Muito básico seria:
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

Isso corresponde a tudo com um @ no meio, precedido por pelo menos um caractere, seguido por pelo menos dois, um ponto e pelo menos dois para o TLD.

Você pode escrever mais LIKE padrões que fazem coisas mais específicas, mas você nunca será capaz de combinar tudo o que poderia ser um endereço de e-mail sem deixar escapar coisas que não são. Mesmo com expressões regulares, você tem dificuldade em fazer isso direito. Além disso, mesmo a correspondência de acordo com as próprias letras do RFC corresponde a construções de endereço que não serão aceitas/usadas pela maioria dos sistemas de e-mail.

Fazer isso no nível do banco de dados talvez seja a abordagem errada de qualquer maneira, portanto, uma verificação de sanidade básica, conforme indicado acima, pode ser o melhor que você pode obter em termos de desempenho, e fazê-lo em um aplicativo fornecerá uma flexibilidade muito maior.