Nulls and Three-Valued Logic
COALESCE
Substitute for NULL
NULL means a value is unknown or missing. COALESCE returns the first non-NULL value from a list.
Program
Play the script to choose the fallback label used when an email address is missing.
coalesce_defaults.sql
CREATE TABLE contacts (name TEXT, email TEXT);
INSERT INTO contacts VALUES ('Ada', 'ada@example.com'), ('Lin', NULL), ('Mia', 'mia@example.com');
WITH params(fallback) AS (VALUES ()) SELECT name, COALESCE(email, (SELECT fallback FROM params)) AS email_label FROM contacts ORDER BY name;
CREATE TABLE contacts (name TEXT, email TEXT);
INSERT INTO contacts VALUES ('Ada', 'ada@example.com'), ('Lin', NULL), ('Mia', 'mia@example.com');
WITH params(fallback) AS (VALUES ()) SELECT name, COALESCE(email, (SELECT fallback FROM params)) AS email_label FROM contacts ORDER BY name;
CREATE TABLE contacts (name TEXT, email TEXT);
INSERT INTO contacts VALUES ('Ada', 'ada@example.com'), ('Lin', NULL), ('Mia', 'mia@example.com');
WITH params(fallback) AS (VALUES ()) SELECT name, COALESCE(email, (SELECT fallback FROM params)) AS email_label FROM contacts ORDER BY name;
NULL
`NULL` represents a missing or unknown value.
COALESCE
`COALESCE(email, fallback)` returns `email` unless it is NULL.
fallback
A parameter CTE can provide the replacement label.