Using the SQL CASE Statement

The common definition of CASE is as follows – Evaluates a list of conditions and returns one of multiple possible result expressions.

The CASE structure is included in just about every programming language (VB, C#, FoxPro, etc) and TSQL is no exception. In SQL Server, the SELECT and UPDATE commands can contain the CASE statement.

Syntax

   1: CASE expression
   2:   WHEN value1 THEN result1
   3:   WHEN value2 THEN result2
   4:   ...
   5:   WHEN valueN THEN resultN
   6:  
   7:   ELSE elseResult
   8: END AS

Example

   1: CREATE TABLE [dbo].[Foo](
   2:     [ID] [int] IDENTITY(1,1) NOT NULL,
   3:     [xRefID] [varchar](20) NOT NULL,
   4:     [fullName] [varchar](40) NOT NULL,
   5:     [gender] [varchar](50) NULL,
   6:     [favoriteTVShow] [varchar](50) NULL,
   7:     [favoriteMovie] [varchar](50) NULL,
   8:     [favoriteBlog] [varchar](50) NULL)
   9:  
  10: INSERT INTO Foo (xRefID, fullName, gender, favoriteTVShow, favoriteMovie, favoriteBlog)
  11: VALUES (1200, 'Rhonda Tipton','F','Heroes~Dexter~Lost','Clerks~Chasing Amy~Resident Evil',' Hanselman.com~ScottGu.com')
  12:   
  13: INSERT INTO Foo (xRefID, fullName, gender, favoriteTVShow, favoriteMovie, favoriteBlog)
  14: VALUES (1201, 'Bob Tipton','M','Heroes~BSG~SG1','Saving Private Ryan~Star Wars','The Wood Whisperer~Hanselman.com')
  15:  
  16: SELECT * FROM Foo
  17:  
  18: SELECT xRefID, fullName,
  19:        CASE gender
  20:          WHEN 'M' THEN 'Male'
  21:          WHEN 'F' THEN 'Female'
  22:          ELSE 'Unknown'
  23:        END AS gender,
  24:        favoriteTVShow, favoriteMovie, favoriteBlog
  25: FROM Foo
  26:  

Result

Scott Mitchell has a very in-depth article on the Power of SQL Case Statements.  I definitely suggest reading it for some much stronger examples of the CASE statement.

I also suggest an article titled Using CASE Expressions by Craig S. Mullins. This article also goes into quite a bit of detail.

Related Links
The Power of SQL CASE Statements – via Scott Mitchell
Using CASE Expressions – via Craig S. Mullins
Exploring the various uses of SQL’s CASE keyword – via TechRepublic
In T-SQL, use CASE…WHEN in place of IF…THEN – via TechRepublic

Have fun!!!

Posted on August 23, 2007, in SQL Server. Bookmark the permalink. Leave a Comment.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.