Nulls and Three-Valued Logic
IS NULL
Find Missing Values
IS NULL and IS NOT NULL test for missing values explicitly.
Program
Play the script to choose whether the query returns missing or present due dates.
is_null_filter.sql
CREATE TABLE tickets (id INTEGER, title TEXT, due_on TEXT);
INSERT INTO tickets VALUES (1, 'docs', NULL), (2, 'release', '2026-03-10'), (3, 'cleanup', NULL);
WITH params(want_missing) AS (VALUES ()) SELECT id, title, due_on FROM tickets WHERE ((SELECT want_missing FROM params) = 1 AND due_on IS NULL) OR ((SELECT want_missing FROM params) = 0 AND due_on IS NOT NULL) ORDER BY id;
CREATE TABLE tickets (id INTEGER, title TEXT, due_on TEXT);
INSERT INTO tickets VALUES (1, 'docs', NULL), (2, 'release', '2026-03-10'), (3, 'cleanup', NULL);
WITH params(want_missing) AS (VALUES ()) SELECT id, title, due_on FROM tickets WHERE ((SELECT want_missing FROM params) = 1 AND due_on IS NULL) OR ((SELECT want_missing FROM params) = 0 AND due_on IS NOT NULL) ORDER BY id;
IS NULL
`due_on IS NULL` finds missing due dates.
IS NOT NULL
`due_on IS NOT NULL` finds present due dates.
WHERE
A `WHERE` filter keeps only rows where the condition is true.