Mas eles não.
NULL
é uma conveniência de sintaxe quando usado como limite de um intervalo, enquanto -infinity
/ infinity
são valores reais no domínio do intervalo. Valores abstratos significando menor/maior que qualquer outro valor, mas valores mesmo assim (que pode ser incluído ou excluído). Além disso,
NULL
funciona para qualquer tipo de intervalo, enquanto a maioria dos tipos de dados não tem valores especiais como -infinity
/ infinity
. Pegue integer
e int4range
por exemplo. Para uma melhor compreensão, considere o tópico em pgsql-general que um_cavalo fornecido :
Toda tipo de dados pode ser
NULL
, mesmo domínios que são explicitamente NOT NULL
. Ver:Isso inclui
date
, claro (como Adrian comentou
):test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Mas tentando discutir
NULL
como valor (quando usado como limite de um intervalo) é uma abordagem enganosa para começar. Não é um valor. Novamente,
NULL
não é tratado como valor no domínio do intervalo. Serve apenas como sintaxe conveniente para dizer:"unbounded". Não mais do que isso.