Bird
Raised Fist0
SQLquery~10 mins

Why equals NULL fails in SQL - Visual Breakdown

Choose your learning style10 modes available
Concept Flow - Why equals NULL fails
Start Query
↓
Check condition: column = NULL
↓
Result is UNKNOWN, not TRUE
↓
Row excluded from result
↓
Query returns no rows matching NULL
↓
Use IS NULL instead for NULL check
SQL treats NULL as unknown, so comparing with = NULL returns unknown, not true, causing rows to be excluded.
Execution Sample
SQL
SELECT * FROM users WHERE last_login = NULL;
This query tries to find rows where last_login is NULL using = NULL, but it returns no rows.
Execution Table
StepCondition EvaluatedResultRow Included?
1last_login = NULL for row 1 (last_login = '2023-01-01')FALSENo
2last_login = NULL for row 2 (last_login = NULL)UNKNOWNNo
3last_login = NULL for row 3 (last_login = '2023-02-01')FALSENo
💡 Rows with FALSE or UNKNOWN for = NULL condition are excluded, so no rows are included in the result.
Variable Tracker
Rowlast_loginCondition last_login = NULLIncluded in Result
1'2023-01-01'FALSENo
2NULLUNKNOWNNo
3'2023-02-01'FALSENo
Key Moments - 2 Insights
Why does comparing a column to NULL with = NULL not return TRUE even if the column is NULL?
In SQL, NULL means unknown, so = NULL does not evaluate to TRUE but to UNKNOWN, which excludes the row from results as shown in execution_table row 2.
How can you correctly check if a column is NULL?
Use IS NULL instead of = NULL. IS NULL returns TRUE when the column is NULL, including those rows in the result.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the result of the condition last_login = NULL for row 2 where last_login is NULL?
ATRUE
BUNKNOWN
CFALSE
DERROR
💡 Hint
Check the 'Result' column for step 2 in execution_table.
At which step does the query exclude rows because the condition is UNKNOWN?
AStep 3
BStep 2
CAll steps
DStep 1
💡 Hint
Look at the 'Row Included?' column for all steps in execution_table.
If you replace = NULL with IS NULL in the query, what would happen to the row with last_login NULL?
AIt would be included
BQuery would error
CIt would still be excluded
DAll rows would be included
💡 Hint
Refer to key_moments explanation about correct NULL checking.
Concept Snapshot
In SQL, NULL means unknown.
Comparing with = NULL returns UNKNOWN, not TRUE.
Rows with UNKNOWN conditions are excluded.
Use IS NULL to check for NULL values correctly.
Example: WHERE column IS NULL returns rows with NULL.
Full Transcript
When you write a SQL query with a condition like column = NULL, it does not work as expected because NULL means unknown. The comparison returns UNKNOWN, not TRUE, so no rows match. To check for NULL values, you must use IS NULL. This is why queries with = NULL return no rows even if NULL values exist. Using IS NULL correctly includes those rows in the result.

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

  1. Step 1: Understand NULL meaning in SQL

    NULL represents an unknown or missing value, not a specific value.
  2. Step 2: Explain comparison behavior with NULL

    Comparing anything to NULL with = or != always returns false because NULL is unknown.
  3. Final Answer:

    Because NULL means unknown and cannot be compared with = or != operators -> Option A
  4. 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

  1. Step 1: Review correct syntax to check NULL

    SQL uses IS NULL to test if a column has NULL values.
  2. 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.
  3. Final Answer:

    WHERE age IS NULL -> Option C
  4. 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

  1. Step 1: Understand the effect of = NULL in WHERE clause

    Comparing with = NULL always yields unknown (false), so no rows match.
  2. Step 2: Predict query result

    The query returns zero rows because no row satisfies email = NULL.
  3. Final Answer:

    No rows at all -> Option D
  4. 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

  1. Step 1: Identify why salary = NULL fails

    Comparing with = NULL always returns false, so no rows match.
  2. Step 2: Use correct syntax to check NULL

    Use IS NULL to find rows where salary is NULL.
  3. Final Answer:

    Change to WHERE salary IS NULL -> Option B
  4. 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

  1. Step 1: Understand NULL comparison rules

    Use IS NULL to check for NULL values, not = NULL or != NULL.
  2. 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.
  3. Final Answer:

    WHERE shipped_date IS NULL OR shipped_date = '2024-01-01' -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard