COALESCE and NULLIF help you write shorter and easier-to-read queries instead of using long CASE statements.
COALESCE and NULLIF as CASE shortcuts in SQL
COALESCE(value1, value2, ..., valueN) NULLIF(value1, value2)
COALESCE returns the first value that is not NULL from the list.
NULLIF returns NULL if the two values are equal; otherwise, it returns the first value.
SELECT COALESCE(NULL, 'apple', 'banana');
SELECT NULLIF(5, 5);
SELECT NULLIF(5, 3);
SELECT COALESCE(NULL, NULL, 'orange');
This example shows how COALESCE replaces NULL names with 'unknown'. NULLIF returns NULL for color 'red', otherwise the color value.
CREATE TABLE fruits (id INT, name VARCHAR(20), color VARCHAR(20)); INSERT INTO fruits VALUES (1, NULL, 'red'), (2, 'apple', NULL), (3, NULL, NULL); SELECT id, COALESCE(name, 'unknown') AS fruit_name, NULLIF(color, 'red') AS fruit_color FROM fruits ORDER BY id;
COALESCE can take any number of arguments, but it stops checking as soon as it finds a non-NULL value.
NULLIF is like a shortcut for a CASE statement that returns NULL when two values match.
COALESCE picks the first non-NULL value from a list.
NULLIF returns NULL if two values are equal, else returns the first value.
Both help simplify CASE statements for common NULL and equality checks.
Practice
COALESCE do?Solution
Step 1: Understand COALESCE behavior
COALESCE checks each argument in order and returns the first one that is not NULL.Step 2: Compare with other options
NULLIF returns NULL if two values are equal, which is different. COALESCE does not convert NULL to zero automatically.Final Answer:
Returns the first non-NULL value from its arguments -> Option AQuick Check:
COALESCE = first non-NULL [OK]
- Confusing COALESCE with NULLIF
- Thinking COALESCE converts NULL to zero
- Assuming COALESCE returns last value
NULLIF in SQL?Solution
Step 1: Recall NULLIF syntax
NULLIF takes exactly two arguments separated by a comma: NULLIF(value1, value2).Step 2: Eliminate incorrect options
NULLIF(value1 = value2) uses an equality inside parentheses, which is invalid syntax. NULLIF(value1; value2) uses a semicolon instead of a comma. NULLIF(value1, value2, value3) has three arguments, which is not allowed.Final Answer:
NULLIF(value1, value2) -> Option AQuick Check:
NULLIF syntax = NULLIF(val1, val2) [OK]
- Using semicolon instead of comma
- Passing more than two arguments
- Using an expression inside NULLIF parentheses
Employees with columns id, bonus (nullable), what is the result of this query?SELECT id, COALESCE(bonus, 100) AS bonus_amount FROM Employees WHERE id = 1;
Assuming the row with
id=1 has bonus = NULL.Solution
Step 1: Understand COALESCE with NULL bonus
Since bonus is NULL for id=1, COALESCE returns the second argument, 100.Step 2: Check query output
The query selects id=1 and bonus_amount as 100, so the result is [{"id": 1, "bonus_amount": 100}].Final Answer:
[{"id": 1, "bonus_amount": 100}] -> Option BQuick Check:
COALESCE(NULL, 100) = 100 [OK]
- Assuming NULL is returned instead of 100
- Confusing COALESCE with NULLIF
- Expecting zero instead of 100
SELECT id, NULLIF(bonus) AS result FROM Employees;
Solution
Step 1: Check NULLIF function usage
NULLIF requires exactly two arguments, but only one (bonus) is provided here.Step 2: Validate other options
NULLIF can be used in SELECT. WHERE clause is optional. NULLIF does not cause data type errors by itself.Final Answer:
NULLIF requires two arguments, only one given -> Option CQuick Check:
NULLIF needs two values [OK]
- Using NULLIF with one argument
- Thinking WHERE clause is mandatory
- Assuming NULLIF changes data type
NULLIF achieves this?Solution
Step 1: Understand NULLIF behavior
NULLIF(value, 0) returns NULL if value equals 0, else returns value unchanged.Step 2: Compare other options
COALESCE returns first non-NULL, not conditional replacement. CASE in CASE WHEN value = 0 THEN value ELSE NULL END returns value when zero, opposite of requirement. NULLIF(0, value) returns NULL if 0 equals value, which is reversed logic.Final Answer:
NULLIF(value, 0) -> Option DQuick Check:
NULLIF(value, 0) replaces zero with NULL [OK]
- Using COALESCE instead of NULLIF
- Reversing argument order in NULLIF
- Writing CASE with wrong THEN/ELSE logic
Ready to prove it?
Pass the test and this pattern moves unknown
