NULL-Safe Filtering: Mistakes
Module: Advanced Filtering
SELECT * FROM customers WHERE email = NULL;
SELECT * FROM customers WHERE email IS NULL;
NULL comparisons with = return NULL (not true). Use IS NULL to test for NULL values.
Always use IS NULL, never = NULL
High
= NULL always returns NULL, never true
SELECT * FROM products WHERE category_id NOT IN (SELECT id FROM archived WHERE id IS NULL);
SELECT * FROM products WHERE category_id NOT IN (SELECT id FROM archived WHERE id IS NOT NULL);
If subquery contains NULL, NOT IN returns no rows. Filter NULL or use NOT EXISTS.
Filter NULL from NOT IN subqueries
High
NOT IN with NULL returns no rows