Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
aiken
Aged Yak Warrior
525 Posts |
Posted - 2003-04-05 : 14:13:32
|
| I'm looking for a UDF that will do a basic validation of an email address; one and only one @, alpha-only for TLD, etc. It'd be easy enough to write, but I'm lazy. If someone's got one, would you post it to the script library?Cheers-b |
|
|
SamC
White Water Yakist
3467 Posts |
Posted - 2003-04-05 : 18:24:24
|
| [url]http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=19434[/url]I made a small revision, here it the latest...SamDROP FUNCTION dbo.EmailIsValidGOCREATE FUNCTION dbo.EmailIsValid (@Email varchar (100))/************************************************************************************************* Purpose: Return TRUE (BIT=1) if email is syntatically valid Used to locate invalid email: SELECT Email FROM Table WHERE NOT dbo.EmailIsValid(Email)*************************************************************************************************/RETURNS BITASBEGINDECLARE @atpos int, @dotpos intSET @Email = LTRIM(RTRIM(@Email)) -- remove leading and trailing blanksIF LEN(@Email) = 0 RETURN(0) -- nothing to validateSET @atpos = charindex('@',@Email) -- position of first (hopefully only) @IF @atpos <= 1 OR @atpos = LEN(@Email) RETURN(0) -- @ is neither 1st or last or missingIF CHARINDEX('@', @email, @atpos+1) > 0 RETURN(0) -- Two @s are illegalIF CHARINDEX(' ',@Email) > 0 RETURN(0) -- Embedded blanks are illegalSET @dotpos = CHARINDEX('.',REVERSE(@Email)) -- location (from rear) of last dotIF (@dotpos < 3) or (@dotpos > 4) or (LEN(@Email) - @dotpos) < @atpos RETURN (0) -- dot / 2 or 3 char, after @RETURN(1) -- Whew !!ENDGoGRANT EXECUTE ON dbo.EmailIsValid TO PublicGODROP FUNCTION dbo.EmailDomainGOCREATE FUNCTION dbo.EmailDomain (@Email varchar (100))/************************************************************************************************* Purpose: Return the Email address DOMAIN ( '@domain.xxx' ) as VARCHAR Complimentary function to dbo.EmailPrefix Use: ORDER BY dbo.EmailDomain(Email), dbo.EmailPrefix(Email)*************************************************************************************************/RETURNS varchar (100)ASBEGIN RETURN (SUBSTRING(@Email, charindex('@', @Email+'@')+1, LEN(@Email)))ENDGoGRANT EXECUTE ON dbo.EmailDomain TO PublicGODROP FUNCTION dbo.EmailPrefixGOCREATE FUNCTION dbo.EmailPrefix (@Email varchar (100))/************************************************************************************************* Purpose: Return the Email prefix ( 'myname' ) from myname@domain.xxx Complimentary function to dbo.EmailDomain Use: ORDER BY dbo.EmailDomain(Email), dbo.EmailPrefix(Email)*************************************************************************************************/RETURNS varchar (100)ASBEGIN RETURN (LEFT(@Email, charindex('@', @Email+'@')-1))ENDGOGRANT EXECUTE ON dbo.EmailPrefix TO PublicGO |
 |
|
|
|
|
|
|
|