You are here: Re: MS SQL IF ELSE condition checking « MsSQL Server « IT news, forums, messages
Re: MS SQL IF ELSE condition checking

Posted by Erland Sommarskog on 07/27/07 21:58

Yas (yasar1@gmail.com) writes:
> I have Table1 with column Email, which has mail addresses in the
> format 'useremailid@'. Few of these Email values are NULL where no
> mail address was specified.
>
> In my View1 I'm using SUBSTRING like... Left(Email,CHARINDEX('@',
> Email)-1) AS EMAIL_NAME (to cut out the @ sign) FROM Table1 and get
> just the usermailid
>
> Anyway, what I would like to do is use the above to get all the
> usermailids and have a condition that checks if Email field IS NULL
> and if TRUE replaces it with blank value ''
>
> So something like IF (Email IS NULL) THEN Email = ''
>
> I've never really used IF ELSE in a query

And you never will, because you can't.

In this particular case, use coalesce:

coalesce(left(email, charindex('@', email) - 1), '') AS EMAIL_NAME

coalesce is a function that accepts two or more values, and returns the
first non-NULL value in the list.

coalesce is a special form of the CASE expression, which you could have
use for in this case. I don't know if your application has a validation
that email really contains a @, but if there isn't you need this:

coalesce(left(Email, CASE WHEN charindex('@', Email) > 0
THEN charindex('@', Email) - 1
ELSE len(Email)
END), '') AS EMAIL_NAME

This is needed, as left() will choke if the second parameter is negative.

The CASE expression - I repeat *expression*, not a statement - evaluates
the conditions in then WHEN clauses in order, and as soon one WHEN
clause is true, the value of the corresponding THEN clause is returned.
If no WHEN clause is true, the value for the ELSE clause is returned.
The ELSE clause may be missing, in which case NULL would be returned.
Note that the data type for the CASE expression is always the one and
the same, regardless of which THEN clause that is returned. Implicit
conversion takes places as needed, and if not possible, you will
get an error.



--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация