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

sin imagen de perfil

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


SQL

Publicado el 18 de Enero del 2008 por Matias Thayer
40.011 visualizaciones desde el 18 de Enero del 2008
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("[email protected]")
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(9)

Publicado el 18 de Enero del 2008gráfica de visualizaciones de la versión: Versión 1
40.012 visualizaciones desde el 18 de Enero del 2008
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 (9)

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
6 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
9 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
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
7 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
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
19 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder
Mayte Mtz
15 de Marzo del 2018
estrellaestrellaestrellaestrellaestrella
Excelente me ayudaste mil :)
Responder
Alejandro
13 de Junio del 2019
estrellaestrellaestrellaestrellaestrella
Da por valido un correo @asdasd.com
Responder

Comentar la versión: Versión 1

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

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s1627