Ma non lo fanno. NULL
è una convenienza sintattica quando usato come limite di un intervallo, mentre -infinity
/ infinity
sono valori effettivi nel dominio della gamma. Valori astratti significano minore/maggiore di qualsiasi altro valore, ma valori tuttavia (che può essere incluso o escluso).
Inoltre, NULL
funziona per qualsiasi tipo di intervallo, mentre la maggior parte dei tipi di dati non ha valori speciali come -infinity
/ infinity
. Prendi integer
e int4range
per esempio.
Per una migliore comprensione, considera il thread in pgsql-general che un_cavallo fornito :
Ogni il tipo di dati può essere NULL
, anche i domini che sono esplicitamente NOT NULL
. Vedi:
Ciò include date
, ovviamente (come Adrian ha commentato
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Ma sto cercando di discutere di NULL
come valore (se usato come limite di un intervallo) è un approccio fuorviante per cominciare. Non è un valore.
Di nuovo, NULL
non viene trattato come valore nel dominio dell'intervallo. Serve solo come comoda sintassi per dire:"illimitato". Non di più.