PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Perché PostgreSQL considera i limiti NULL nei tipi di intervallo distinti dai limiti infiniti?

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