sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué PostgreSQL considera que los límites NULL en los tipos de rango son distintos de los límites infinitos?

Pero ellos no. NULL es una conveniencia de sintaxis cuando se usa como límite de un rango, mientras que -infinity / infinity son valores reales en el dominio del rango. Valores abstractos que significan menor/mayor que cualquier otro valor, pero valores no obstante (que puede incluirse o excluirse).

Además, NULL funciona para cualquier tipo de rango, mientras que la mayoría de los tipos de datos no tienen valores especiales como -infinity / infinity . Tomar integer y int4range por ejemplo.

Para una mejor comprensión, considere el hilo en pgsql-general que un_caballo proporcionado :

Cada el tipo de datos puede ser NULL , incluso dominios que son explícitamente NOT NULL . Ver:

Eso incluye date , por supuesto (como Adrian comentó ):

test=> SELECT NULL::date, pg_typeof(NULL::date);
 date | pg_typeof 
------+-----------
      | date
(1 row)

Pero tratando de discutir NULL como valor (cuando se usa como límite de un rango) es un enfoque engañoso para empezar. No es un valor.

De nuevo, NULL no se trata como valor en el dominio del rango. Simplemente sirve como sintaxis conveniente para decir:"ilimitado". No más que eso.