Maar dat doen ze niet. NULL
is een syntaxis gemak wanneer gebruikt als begrenzing van een bereik, terwijl -infinity
/ infinity
zijn werkelijke waarden in het domein van het assortiment. Abstracte waarden betekenen kleiner/groter dan elke andere waarde, maar waarden niettemin (die kan worden opgenomen of uitgesloten).
Ook NULL
werkt voor elke bereiktype, terwijl de meeste gegevenstypen geen speciale waarden hebben zoals -infinity
/ infinity
. Neem integer
en int4range
bijvoorbeeld.
Overweeg voor een beter begrip de thread in pgsql-general die een_paard geleverd :
Elke gegevenstype kan NULL
zijn , zelfs domeinen die expliciet NOT NULL
zijn . Zie:
Dat omvat date
, natuurlijk (zoals Adrian heeft gereageerd
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Maar proberen om NULL
te bespreken als waarde (wanneer gebruikt als grens van een bereik) is om te beginnen een misleidende benadering. Het is geen waarde.
Nogmaals, NULL
wordt niet behandeld als waarde in het domein van het bereik. Het dient gewoon als handige syntaxis om te zeggen:"onbegrensd". Niet meer dan dat.