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ù.