Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / database / SQL-Server

SQL COALESCE Function and NULL

4.50/5 (4 votes)
23 Feb 2020MIT2 min read 11.2K  
SQL COALESCE function and how you can test for null, and when present, substitute it for another value
Whenever you deal with NULL touching an expression and want to avoid rendering the result as NULL, a solution is required to break out of the cycle. With the SQL COALESCE function, you can test for NULL, and when present, substitute NULL for another value. This post takes a look at COALESCE and also compares SQL COALESCE to CASE.

Knowing when to use the SQL COALESCE function is a lifesaver when you’re dealing with NULL.

As you know, NULL is a tricky concept, and it seems whatever NULL “touches” in an expression, it renders the result NULL. So, when you’re dealing with NULL, how can you break out of the cycle? That is, how can you display another value instead?

This is where SQL COALESCE comes into play. With this function, you can test for NULL, and when present, substitute NULL for another value.

What is COALESCE?

COALESCE is a built-in SQLServer Function. Use COALESCE when you need to replace a NULL with another value. It takes the form:

SQL
COALESCE(value1, value2, ..., valuen)

It returns the first non NULL from the value list.

Consider the baseball parks from Lahmans Baseball Database. If we want to display the parkname in place of the parkalias, which may be null, COALESCE works well here:

SELECT COALESCE(parkalias, parkname) as ParkAlias, city, state FROM Parks

SQL
-- Answer
SELECT COALESCE(parkalias, parkname) as ParkAlias,
             city,
             state
FROM   Parks

In this example, COALESCE(parkalias, parkname) returns the value found in parkalias if the value is not NULL; however, if it is NULL, then parkname is returned.

What SQL would you write if you wanted to display ‘Unknown’ if the parkalias is NULL? Why not try to write the query… here is a start…

SELECT parkalias, parkname, city, state FROM Parks

SQL
-- Answer
SELECT COALESCE(parkalias, 'Unknown') as parkalias,
            parkname,
            city,
            state
FROM  Parks

Comparing SQL COALESCE to CASE

Did you know SQL COALESCE is a shortcut for the CASE statement?

Consider the table survey, which has the columns answerID, option1, option2, option3.

We want to list the answerID and first non NULL option.

From what we have learned, we can use COALESCE as:

SQL
SELECT answerID,
       COALESCE(option1, option2, option3, 'No Option Selected')
FROM   survey

This is a shortcut for this CASE statement:

SQL
SELECT answerID,
       CASE
          WHEN option1 is not NULL then option1
          WHEN option2 is not NULL then option2
          WHEN option3 is not NULL then option3 
          ELSE 'No Option Selected'
       END
FROM   survey

CASE is used in more circumstances, but when replacing NULL, COALESCE is a handy shortcut!

For the record, SQL Server has many more interesting functions to learn and explore. If you haven’t done so already, check out these string functions to manipulate text data!

License

This article, along with any associated source code and files, is licensed under The MIT License