Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Create a function

Posted on 2011-09-25
5
Medium Priority
?
218 Views
Last Modified: 2012-05-12
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
Comment
Question by:red_75116
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 
LVL 29

Expert Comment

by:QPR
ID: 36596785
Have you pasted the right bit? In the right forum?
0
 
LVL 29

Expert Comment

by:QPR
ID: 36596848
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
 
LVL 29

Expert Comment

by:QPR
ID: 36596851
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
 
LVL 50

Accepted Solution

by:
Lowfatspread earned 2000 total points
ID: 36598089
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
 

Author Closing Comment

by:red_75116
ID: 36717922
Works perfectly!  Thanks!
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hi all, It is important and often overlooked to understand “Database properties”. Often we see questions about "log files" or "where is the database" and one of the easiest ways to get general information about your database is to use “Database p…
In this article I will describe the Backup & Restore method as one possible migration process and I will add the extra tasks needed for an upgrade when and where is applied so it will cover all.
This course is ideal for IT System Administrators working with VMware vSphere and its associated products in their company infrastructure. This course teaches you how to install and maintain this virtualization technology to store data, prevent vuln…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question