Validando emails com o SQL Server

Validando emails com o SQL Server

A validação de e-mails é algo que deve ser feito do lado da aplicação, mas, podemos ter casos onde recebemos um banco de dados que tem e-mails inválidos. Vamos ver neste artigo como fazer a validação de e-mails usando SQL Server.

Como fazer a limpeza de dados?

A primeira coisa a fazer é identificar quais seriam os e-mails incorretos. Vamos criar uma query, mas, precisamos definir certas regras. Um e-mail correto é aquele que atende as seguintes condições:

1 - Não possui espaços em branco

2 - O "@" não é o primeiro caractere.

3 - O "." não é o último caractere.

4 - Deve existir um "." depois da "@".

5 - Apenas deve existir uma "@" por e-mail

6 - O nome de domínio deve ter pelo menos 2 caracteres, e finalmente

7 - Não devem existir padrões como ".@" e ".."

Para montar a nossa query, vamos combinar as seguintes funções:

CHARINDEX - Localiza a posição de um determinado caractere.

LTRIM - Apaga espaços em branco no começo.

RTRIM - Apaga espaços em branco no final.

LEFT - Seleciona uma determina quantidade da caracteres a partir da esquerda.

RIGHT - Seleciona uma determina quantidade da caracteres a partir da direita.

LEN - Conta a quantidade de caracteres.

REPLACE - Substitui um determinado caractere.

REVERSE - Inverte os caracteres.

A nossa query para selecionar e-mails inválidos vai ficar da seguinte forma:

SELECT * 

FROM minha_tabela

WHERE NOT

(

CHARINDEX(' ',LTRIM(RTRIM([Email]))) = 0  --(1)

AND  LEFT(LTRIM([Email]),1) <> '@'  --(2)

AND  RIGHT(RTRIM([Email]),1) <> '.'  --(3)

AND  CHARINDEX('.',[Email],CHARINDEX('@',[Email])) - CHARINDEX('@',[Email]) > 1  -- (4)

AND  LEN(LTRIM(RTRIM([Email]))) - LEN(REPLACE(LTRIM(RTRIM([Email])),'@','')) = 1  -- (5)

AND  CHARINDEX('.',REVERSE(LTRIM(RTRIM([Email])))) >= 3  -- (6)

AND  (CHARINDEX('.@',[Email]) = 0 AND CHARINDEX('..',[Email]) = 0) -- (7)

)

Os números entre parênteses se referem a lista numerada com as validações.

Você também pode inserir uma regra na sua tabela para bloquear a inserção de e-mails no formato inválido, caso não seja possível inserir esta regra no frontend de sua aplicação. Para inserir esta restrição (constraint), você pode fazer da seguinte forma:

 ALTER TABLE [dbo].[minha_tabela] 

WITH CHECK ADD 

CONSTRAINT [ValidarEmail] 

CHECK

(

CHARINDEX(' ',LTRIM(RTRIM([Email]))) = 0 -- (1)

AND LEFT(LTRIM([Email]),1) <> '@'  -- (2)

AND RIGHT(RTRIM([Email]),1) <> '.' -- (3)

AND CHARINDEX('.',[Email],CHARINDEX('@',[Email])) - CHARINDEX('@',[Email]) > 1 -- (4)

AND LEN(LTRIM(RTRIM([Email]))) - LEN(REPLACE(LTRIM(RTRIM([Email])),'@','')) = 1 -- (5)

AND CHARINDEX('.',REVERSE(LTRIM(RTRIM([Email])))) >= 3 -- (6)

AND (CHARINDEX('.@',[Email]) = 0 AND CHARINDEX('..',[Email]) = 0) -- (7)

)

GO

 

 

Outros conteudos que podem ser de seu interesse

O que são data lakes e data warehouses?
24/11/2024SQL

O que são data lakes e data warehouses?

Entenda as diferenças entre estas duas formas de armazenamento de dados

Saiba mais...
Localizar colunas por nome ou tipo de dados no SQL
23/07/2023SQL

Localizar colunas por nome ou tipo de dados no SQL

Descubra como localizar uma coluna por nome ou tipo de dados em qualquer tabela de seu banco de dados

Saiba mais...
Canais do Youtube para aprender Power Query
04/08/2024SQL

Canais do Youtube para aprender Power Query

Confira os melhores canais do Youtube para aprender Power Query

Saiba mais...

Conteúdo sobre banco de dados sem complicação!


Warning: Cannot modify header information - headers already sent by (output started at /home/storage/f/7d/a9/dbins/public_html/blog/post.php:101) in /home/storage/f/7d/a9/dbins/public_html/blog/ga4_track.php on line 11