NULL Values
NULL values are special values that are used to represent missing data in SQL. Columns of any type can contain NULL values. Logically, a NULL value can be seen as “the value of this field is unknown”.
A NULL value can be inserted to any field that does not have the NOT NULL qualifier:
CREATE TABLE integers (i INTEGER);INSERT INTO integers VALUES (NULL);NULL values have special semantics in many parts of the query as well as in many functions:
Any comparison with a
NULLvalue returnsNULL, includingNULL = NULL.
You can use IS NOT DISTINCT FROM to perform an equality comparison where NULL values compare equal to each other. Use IS (NOT) NULL to check if a value is NULL.
SELECT NULL = NULL;NULLSELECT NULL IS NOT DISTINCT FROM NULL;trueSELECT NULL IS NULL;trueNULL and Functions
A function that has an input argument as NULL usually returns NULL.
SELECT cos(NULL);NULLThe coalesce function is an exception to this: it takes any number of arguments, and returns for each row the first argument that is not NULL. If all arguments are NULL, coalesce also returns NULL.
SELECT coalesce(NULL, NULL, 1);1SELECT coalesce(10, 20);10SELECT coalesce(NULL, NULL);NULLThe ifnull function is a two-argument version of coalesce.
SELECT ifnull(NULL, 'default_string');default_stringSELECT ifnull(1, 'default_string');1NULL and AND / OR
NULL values have special behavior when used with AND and OR.
For details, see the Boolean Type documentation.
NULL and IN / NOT IN
The behavior of ... IN ⟨something with a NULL⟩{:.language-sql .highlight} is different from ... IN ⟨something with no NULLs⟩{:.language-sql .highlight}.
For details, see the IN documentation.
NULL and Aggregate Functions
NULL values are ignored in most aggregate functions.
Aggregate functions that do not ignore NULL values include: first, last, list and array_agg. To exclude NULL values from those aggregate functions, the FILTER clause can be used.
CREATE TABLE integers (i INTEGER);INSERT INTO integers VALUES (1), (10), (NULL);SELECT min(i) FROM integers;1SELECT max(i) FROM integers;10