PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que o PostgreSQL considera os limites NULL em tipos de intervalo distintos dos limites infinitos?


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.