In SQL, comparing a value to NULL using equals (=) does not work because NULL means unknown or missing data. SQL treats NULL differently from normal values.
When you want to check if a database field has no value (is empty or missing).
When filtering records where a column might not have any data.
When you want to avoid wrong results by using proper NULL checks.
When writing queries that handle optional or incomplete information.
Using = NULL will never return true because NULL is not a value but a marker for missing data.
Examples
This finds employees who do not have a manager assigned.
SQL
SELECT * FROM employees WHERE manager_id ISNULL;
This finds orders that have been shipped (shipped_date has a value).
SQL
SELECT * FROM orders WHERE shipped_date ISNOTNULL;
This query will return no rows because = NULL does not work.
SQL
SELECT * FROM products WHERE price = NULL;
Sample Program
This example shows how to find rows where the 'value' column is NULL using IS NULL. The second query tries = NULL and returns nothing.
SQL
CREATETABLE test_null (
id INT,
value VARCHAR(10)
);
INSERTINTO test_null VALUES (1, 'apple');
INSERTINTO test_null VALUES (2, NULL);
INSERTINTO test_null VALUES (3, 'banana');
-- Correct way to find NULL valuesSELECT id FROM test_null WHERE value ISNULL;
-- Incorrect way that returns no rowsSELECT id FROM test_null WHERE value = NULL;
OutputSuccess
Important Notes
NULL means unknown or missing, not zero or empty string.
Always use IS NULL or IS NOT NULL to check for NULL values.
Summary
NULL is special and cannot be compared with = or !=.
Use IS NULL to find missing values.
Using = NULL always fails and returns no results.
Practice
(1/5)
1. Why does the SQL condition column = NULL always fail to find rows with NULL values?
easy
A. Because NULL means unknown and cannot be compared with = or != operators
B. Because NULL is treated as zero in SQL
C. Because NULL is a string and needs quotes
D. Because NULL values are automatically excluded from queries
Solution
Step 1: Understand NULL meaning in SQL
NULL represents an unknown or missing value, not a specific value.
Step 2: Explain comparison behavior with NULL
Comparing anything to NULL with = or != always returns false because NULL is unknown.
Final Answer:
Because NULL means unknown and cannot be compared with = or != operators -> Option A
Quick Check:
NULL comparison with = fails [OK]
Hint: Use IS NULL to check for NULL, not = NULL [OK]
Common Mistakes:
Using = NULL to find NULL values
Assuming NULL equals zero
Trying to quote NULL as a string
2. Which of the following SQL WHERE clauses correctly checks for NULL values in the age column?
easy
A. WHERE age != NULL
B. WHERE age = NULL
C. WHERE age IS NULL
D. WHERE age = 'NULL'
Solution
Step 1: Review correct syntax to check NULL
SQL uses IS NULL to test if a column has NULL values.
Step 2: Analyze each option
WHERE age = NULL and C use = or != with NULL which always fail; WHERE age = 'NULL' treats NULL as a string which is incorrect.
Final Answer:
WHERE age IS NULL -> Option C
Quick Check:
Use IS NULL for NULL checks [OK]
Hint: Always use IS NULL or IS NOT NULL for NULL checks [OK]
Common Mistakes:
Using = NULL or != NULL in WHERE clause
Quoting NULL as a string
Confusing NULL with empty string
3. Given a table users with a column email that contains some NULL values, what will this query return?
SELECT * FROM users WHERE email = NULL;
medium
A. All rows where email is NULL
B. All rows where email is not NULL
C. Syntax error
D. No rows at all
Solution
Step 1: Understand the effect of = NULL in WHERE clause
Comparing with = NULL always yields unknown (false), so no rows match.
Step 2: Predict query result
The query returns zero rows because no row satisfies email = NULL.
Final Answer:
No rows at all -> Option D
Quick Check:
email = NULL returns no rows [OK]
Hint: = NULL never matches any row, returns empty result [OK]
Common Mistakes:
Expecting rows with NULL to be returned
Thinking = NULL is valid syntax
Confusing NULL with empty string
4. You wrote this query to find rows with NULL in salary:
SELECT * FROM employees WHERE salary = NULL;
But it returns no rows. What is the fix?
medium
A. Use WHERE salary != NULL
B. Change to WHERE salary IS NULL
C. Add quotes: WHERE salary = 'NULL'
D. Change to WHERE salary = 0
Solution
Step 1: Identify why salary = NULL fails
Comparing with = NULL always returns false, so no rows match.
Step 2: Use correct syntax to check NULL
Use IS NULL to find rows where salary is NULL.
Final Answer:
Change to WHERE salary IS NULL -> Option B
Quick Check:
Use IS NULL, not = NULL [OK]
Hint: Replace = NULL with IS NULL to fix query [OK]
Common Mistakes:
Using = NULL instead of IS NULL
Comparing NULL to zero
Quoting NULL as string
5. You want to select all rows from orders where shipped_date is either NULL or equals '2024-01-01'. Which WHERE clause is correct?
hard
A. WHERE shipped_date IS NULL OR shipped_date = '2024-01-01'
B. WHERE shipped_date = NULL OR shipped_date = '2024-01-01'
C. WHERE shipped_date = 'NULL' OR shipped_date = '2024-01-01'
D. WHERE shipped_date != NULL OR shipped_date = '2024-01-01'
Solution
Step 1: Understand NULL comparison rules
Use IS NULL to check for NULL values, not = NULL or != NULL.
Step 2: Analyze the WHERE clause options
WHERE shipped_date IS NULL OR shipped_date = '2024-01-01' correctly uses IS NULL and equals comparison; others misuse NULL comparisons or treat NULL as string.
Final Answer:
WHERE shipped_date IS NULL OR shipped_date = '2024-01-01' -> Option A
Quick Check:
Combine IS NULL with = for dates [OK]
Hint: Use IS NULL for NULL, = for values in OR conditions [OK]
Common Mistakes:
Using = NULL or != NULL in OR conditions
Quoting NULL as string
Mixing NULL checks with wrong operators
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.