sql >> Databáze >  >> RDS >> PostgreSQL

Proč PostgreSQL považuje hranice NULL v typech rozsahů za odlišné od nekonečných hranic?

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.




  1. Jak zkontrolovat nevyřízené operace v transakci PostgreSQL

  2. MySQL:DATE_ADD

  3. Problém s řazením znaků s diakritikou v PostgreSQL 8.4

  4. Databáze - Návrh tabulky událostí