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.