Skip to main content

NULL Handling

NULL means "missing" or "unknown", not zero and not empty string.

Correct null handling is essential for reliable filters.

Core Concepts​

CheckCorrect syntaxAvoid
Is nullcolumn IS NULLcolumn = NULL
Is not nullcolumn IS NOT NULLcolumn != NULL

Code Examples​

-- Setup table with missing values.
CREATE TABLE profiles_null (
profile_id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
phone TEXT
);

INSERT INTO profiles_null (name, phone)
VALUES ('Ava', NULL), ('Ben', '123-456'), ('Chen', NULL);
Expected output
Table created and three rows inserted (two with NULL phone).
-- Correct null filter.
SELECT profile_id, name
FROM profiles_null
WHERE phone IS NULL;
profile_idname
1Ava
3Chen
-- Non-null filter.
SELECT profile_id, name, phone
FROM profiles_null
WHERE phone IS NOT NULL;
profile_idnamephone
2Ben123-456

SQLite-Specific Nuances​

SQLite Nuance

In SQLite, NULL follows SQL three-valued logic. Comparisons with NULL using = do not evaluate to true.

Common Pitfalls / Best Practices​

Pitfall

Writing WHERE phone = NULL and expecting null rows.

Best Practice

Use IS NULL / IS NOT NULL consistently, and model optional data intentionally.

Quick Challenge​

Count how many rows in profiles_null have missing phone.

View Solution
SELECT count(*) AS missing_phone_count
FROM profiles_null
WHERE phone IS NULL;
missing_phone_count
2