• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 222
  • Last Modified:

Create a function

How can I turn this select statement into a function that will return true if the email address appears valid and false if it doesn't. This select statement works, but only returns bad email addresses.

SELECT *  FROM ARCUSFIL_SQL WHERE NOT (
 	CHARINDEX(' ',LTRIM(RTRIM([Email_addr]))) = 0  AND
  	LEFT(LTRIM([Email_addr]),1) <> '@'  AND
  	RIGHT(RTRIM([Email_addr]),1) <> '.'  AND
  	CHARINDEX('.',[Email_addr],CHARINDEX('@',[Email_addr])) - CHARINDEX('@',[Email_addr]) > 1  AND
  	LEN(LTRIM(RTRIM([Email_addr]))) - LEN(REPLACE(LTRIM(RTRIM([Email_addr])),'@','')) = 1  AND 
 	CHARINDEX('.',REVERSE(LTRIM(RTRIM([Email_addr])))) >= 3  AND
  	(CHARINDEX('.@',[Email_addr]) = 0 AND CHARINDEX('..',[Email_addr]) = 0)  )

Open in new window

0
red_75116
Asked:
red_75116
  • 3
1 Solution
 
QPRCommented:
Have you pasted the right bit? In the right forum?
0
 
QPRCommented:
Here is the syntax for creating a function
http://msdn.microsoft.com/en-us/library/ms186755.aspx

Look at the "return" keyword - this will allow you to return true/false based upon your select statement within the function
0
 
QPRCommented:
someones done one here
http://www.nimbleuser.com/blogs/Developers/developers/SQL_Function_to_Validate_email_address_syntax.aspx

It's basic but might do the trick if needed to be bulletproof
Failing that, google: t-sql validate email address
Bound to be heaps
0
 
LowfatspreadCommented:
like this ?

C
REATE FUNCTION dbo.fnValidateEmail(@EMAIL varchar(100))
returns bit
as
Begin
return (
Select case when email like '_%@__%.__%'            -- basic valid pattern x@xx.xx
            then case when charindex(' ',email) = 0 -- no spaces
                       and left(email,1)<>'@'       -- not start with @
                       and left(liame,1)<>'.'       -- not end with .
                       and charindex('.@',email)=0  -- name cant end in .
                       and charindex('..',email)=0  -- cant have ..
                       and charindex('.',liame)>=3  -- suffix must be at least 2 char
            -- handled by pattern  period after @
            --         and CHARINDEX('.',[Email],CHARINDEX('@',[Email])) - CHARINDEX('@',[Email]) > 1
                       and LEN([Email]) - LEN(REPLACE([Email],'@','')) = 1 -- only 1 @
                      then 1
                      else 0
                      end
            else 0
            end
  from (select email,reverse(email) as liame
          from (select ltrim(rtrim(coalesce(@email,''))) as email) as x
       ) as y
)
End

Open in new window

0
 
red_75116Author Commented:
Works perfectly!  Thanks!
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now