Bird
Raised Fist0
SQLquery~3 mins

Why equals NULL fails in SQL - The Real Reasons

Choose your learning style10 modes available
The Big Idea

Why does checking for 'nothing' in your data never work the way you expect?

The Scenario

Imagine you have a list of friends and you want to find those whose phone number you don't know yet. You try to check if their phone number is equal to nothing, but it doesn't work as expected.

The Problem

Using the usual equals sign (=) to check for unknown or missing values (NULL) doesn't work because NULL means 'unknown'. Comparing anything to unknown with = always fails or returns no results, making your search frustrating and incomplete.

The Solution

SQL provides a special way to check for NULL values using IS NULL or IS NOT NULL. This lets you correctly find records where data is missing or unknown, solving the problem elegantly.

Before vs After
✗ Before
SELECT * FROM friends WHERE phone = NULL;
✓ After
SELECT * FROM friends WHERE phone IS NULL;
What It Enables

This concept allows you to accurately find and handle missing or unknown data in your database queries.

Real Life Example

When managing customer records, you can find all customers who haven't provided their email address yet by checking if the email field IS NULL.

Key Takeaways

NULL means unknown, not just empty or zero.

Using = NULL doesn't work because comparisons with unknown always fail.

Use IS NULL or IS NOT NULL to check for missing data correctly.

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