SQL traps · SQL

SQL: NULL = NULL is NOT true?!PRO

Watch the video

NULL means unknown, so = NULL never matches a row. IS NULL and COALESCE fix it.

-- SQL: NULL = NULL is NOT true ?! — NULL means "unknown", so = NULL never matches.
CREATE TABLE users (name TEXT, email TEXT);
INSERT INTO users VALUES ('Asha', 'asha@mail.com'), ('Ravi', NULL), ('Meera', NULL);

SELECT 'WHERE email = NULL' AS query, COUNT(*) AS rows FROM users WHERE email = NULL;   -- 0 ?!
SELECT 'WHERE email IS NULL' AS query, COUNT(*) AS rows FROM users WHERE email IS NULL; -- 2 ✓

SELECT NULL = NULL AS equal_check;      -- NULL (unknown), not 1
SELECT name, COALESCE(email, '(none)') AS email FROM users;   -- show a default ✓
Open code S1 in Pocket Compiler Download the Pocket Compiler app — free

No app yet? Install it, then open the app and type the code S1 in Code Library.