Но те не го правят. NULL
е синтактично удобство когато се използва като граница на диапазон, докато -infinity
/ infinity
са действителни стойности в областта на диапазона. Абстрактни стойности, означаващи по-малки/по-големи от всяка друга стойност, но стойности въпреки това (които могат да бъдат включени или изключени).
Освен това, NULL
работи за всеки тип диапазон, докато повечето типове данни нямат специални стойности като -infinity
/ infinity
. Вземете integer
и int4range
например.
За по-добро разбиране разгледайте нишката в pgsql-general, която предоставен кон :
Всеки типът данни може да бъде NULL
, дори домейни, които изрично са NOT NULL
. Вижте:
Това включва date
, разбира се (като Адриан коментира
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Но се опитвам да обсъдя NULL
като стойност (когато се използва като граница на диапазон) е подвеждащ подход като начало. Това не е стойност.
Отново NULL
не се третира като стойност в домейна на диапазона. Той просто служи като удобен синтаксис да се каже:"неограничен". Не повече от това.