Código de SQL - Validar Email en Sql Server >=2000

Validar Email en Sql Server >=2000gráfica de visualizaciones


SQL

estrellaestrellaestrellaestrellaestrella(7)
Publicado el 18 de Enero del 2008 por Matias Thayer
18.310 visualizaciones desde el 18 de Enero del 2008. Una media de 42 por semana
Esta función recibe como parámetro una cadena de texto (supuestamente un email) y valida que esté bien escrito según varios criterios para validar las bases de datos ya cargadas y hacer envíos masivos de email.
La función devuelve el email ingresado si éste es válido o NULL si el email es erróneo.
La pueden llamar de esta forma:
select dbo.fn_BuscaEmail("cualquieremail@cualquierdominio.com")
o así
select dbo.fn_BuscaEmail(campoEmail) from tablaLlenadeEmails
o así
update tabla1
set tabla1.email=dbo.fn_BuscaEmail(tabla2.Email)
from tabla1 inner join tabla2 on tabla1.id=tabla2.id

Versión 1
estrellaestrellaestrellaestrellaestrella(7)

Publicado el 18 de Enero del 2008gráfica de visualizaciones de la versión: Versión 1
18.311 visualizaciones desde el 18 de Enero del 2008. Una media de 42 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
ALTER FUNCTION fn_BuscaEmail  (@s varchar(100))
RETURNS VARCHAR(100)
AS
BEGIN
--ELIMINAMOS ESPACIOS IDENTIFICABLES COMO ERROR DE TIPEO Y REEMPLAZAMOS EÑES POR ENES
   SELECT @s=LTRIM(RTRIM(@s))
   SELECT @s=REPLACE(@s,',', '.')
   SELECT @s=REPLACE(@s,'@ ', '@')
   SELECT @s=REPLACE(@s,' @',  '@')
   SELECT @s=REPLACE(@s,'. ', '.')
   SELECT @s=REPLACE(@s,' .', '.')
   SELECT @s=REPLACE(@s,'ñ', 'n')
  
--VALIDA ACENTOS, SI ENCUENTRA ACENTO INVALIDA EL EMAIL
   IF CHARINDEX('á',@s,1)>0 or CHARINDEX('é',@s,1)>0 or CHARINDEX('í',@s,1)>0 or CHARINDEX('ó',@s,1)>0 or CHARINDEX('ú',@s,1)>0
 RETURN null
   IF CHARINDEX('à',@s,1)>0 or CHARINDEX('è',@s,1)>0 or CHARINDEX('ì',@s,1)>0 or CHARINDEX('ò',@s,1)>0 or CHARINDEX('ù',@s,1)>0
 RETURN null
  
   IF CHARINDEX('@',@s,1)>0 AND CHARINDEX('.', @s, CHARINDEX( '@', @s))>0 --VALIDA QUE EXISTA ARROBA Y PUNTO DESPUES DEL ARROBA
   BEGIN
      IF charindex('@' , @s, CHARINDEX('@',@s,1)+1)>0
         RETURN NULL --ENCUENTRA 2 ARROBAS Y RETORNA NULO   
      DECLARE @USER AS VARCHAR(60)
      DECLARE @DOM AS VARCHAR(60)
      SET @USER=SUBSTRING(@s,1,CHARINDEX( '@',@s)-1)
      SET @DOM=SUBSTRING(@s,CHARINDEX( '@',@s)+1, 100)
      SET @USER=LTRIM(RTRIM(@USER))
      SET @DOM=LTRIM(RTRIM(@DOM))
     
      --VALIDA QUE EL DOMINIO TENGA 2 O TRES CARACTERES
      IF LEFT(RIGHT(@DOM, 3), 1)='.' OR LEFT(RIGHT(@DOM, 4), 1)='.'
      BEGIN
         --REEMPLAZA ESPACIOS POR "_" SOLO EN USUARIO, NO EN DOMINIO
         IF CHARINDEX(' ', @USER)>0
         BEGIN
            SET @USER=REPLACE(@USER, ' ', '_')
            RETURN @USER +  '@' + @DOM --RETORNA EMAIL CON ESPACIOS CONVERTIDOS
         END
  ELSE
            RETURN @USER + '@'  + @DOM --RETORNA EMAIL
      END
      ELSE
         RETURN NULL -- RETORNA NULO, EL DOMINIO TENIA MAS DE 3 LETRAS O MENOS DE 2
   END
/*
RESUMEN VALIDACIONES:
VALIDAR ARROBA
VALIDAR PUNTO DESPUES DEL ARROBA 
VALIDAR EMAILS CON ACENTOS 
VALIDAR EMAILS CON MENOS DE 2 CARACTERES DESPUES DEL PUNTO (DOMINIOS .C)
VALIDAR EMAILS CON MAS DE 3 CARACTERES DESPUES DEL PUNTO (DOMINIOS .COMU)
REEMPLAZAR ESPACIOS POR "_" SOLO EN LO QUE ESTA ANTES DEL ARROBA 
VALIDAR QUE NO EXISTAN DOS ARROBAS
*/
   RETURN NULL
END



Comentarios sobre la versión: Versión 1 (7)

Fran
25 de Enero del 2008
estrellaestrellaestrellaestrellaestrella
Disculpa Matias, ¿Qué parte hace envio masivo de email? Me imagino que hace validaciones masivas de email ¿es a eso a lo que te refieres?

Gracias.
Responder
Matias
06 de Marzo del 2008
estrellaestrellaestrellaestrellaestrella
Sólo valida el string del email, pero no hace envío masivo para testear dominios y cuentas. Eso lo hacemos por otro lado :P

saludoss
Responder
inx
09 de Marzo del 2008
estrellaestrellaestrellaestrellaestrella
se valida la info en el cliente y recien se envia
no deberia hacer falta que esa info llegue hasta la DB para ser valida
saludos ...
Responder
Matias
19 de Marzo del 2008
estrellaestrellaestrellaestrellaestrella
Siempre que siempre la empresa haya tenido buenos sistemas validadores de ingreso de datos. Pero cuando no es así puede ser de utilidad validar después en la db. Por ejemplo yo he puesto mi email con dominio ".como" y me ha dejado pasar este formulario de lwdp.

Saludos
Responder
manuel
07 de Septiembre del 2011
estrellaestrellaestrellaestrellaestrella
muchas gracias por el aporte matias me acavas de salvar de una pela :) solo tratare de agregar algunas cosas mas queme piden pero tu me has ayudado muchisimo con esto GRACIAS!!!!
Responder
Alfonso
13 de Octubre del 2011
estrellaestrellaestrellaestrellaestrella
Muchas gracias por este aporte esta muy completo y me ahorraste un rato de desarrollo saludos y gracias de nuevo
Responder
jonathan
19 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s1627