Ale oni ne. NULL
je vymoženost syntaxe při použití jako hranice rozsahu, zatímco -infinity
/ infinity
jsou skutečné hodnoty v doméně rozsahu. Abstraktní hodnoty znamenají menší / větší než jakákoli jiná hodnota, ale hodnoty nicméně (které lze zahrnout nebo vyloučit).
Také NULL
funguje pro jakékoli typ rozsahu, zatímco většina datových typů nemá speciální hodnoty jako -infinity
/ infinity
. Vezměte integer
a int4range
například.
Pro lepší pochopení zvažte vlákno v pgsql-general, které poskytován_kůň :
Každý datový typ může být NULL
, dokonce i domény, které jsou explicitně NOT NULL
. Viz:
To zahrnuje date
, samozřejmě (jako Adrian okomentoval
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Ale snažím se diskutovat o NULL
jako hodnotu (při použití jako hranice rozsahu) je pro začátek zavádějící přístup. Není to hodnota.
Opět NULL
není považováno za hodnotu v doméně rozsahu. Slouží jen jako pohodlná syntaxe, která říká:„neohraničený“. Nic víc než to.