PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Dlaczego PostgreSQL uważa, że ​​granice NULL w typach zakresów różnią się od granic nieskończonych?

Ale oni nie. NULL jest wygodą składni gdy jest używany jako granica zakresu, podczas gdy -infinity / infinity są rzeczywistymi wartościami w domenie zakresu. Abstrakcyjne wartości oznaczają mniejsze/większe niż jakakolwiek inna wartość, ale wartości niemniej jednak (co można włączyć lub wyłączyć).

Również NULL działa dla każdego typ zakresu, podczas gdy większość typów danych nie ma specjalnych wartości, takich jak -infinity / infinity . Weź integer i int4range na przykład.

Aby lepiej zrozumieć, rozważ wątek w pgsql-general, który podano a_konia :

Każdy typ danych może być NULL , nawet domeny, które są jawnie NOT NULL . Zobacz:

Obejmuje to date , oczywiście (jak Adrian skomentował ):

test=> SELECT NULL::date, pg_typeof(NULL::date);
 date | pg_typeof 
------+-----------
      | date
(1 row)

Ale próbuję omówić NULL jako wartość (gdy jest używany jako granica zakresu) jest podejściem wprowadzającym w błąd. To nie jest wartość.

Ponownie, NULL nie jest traktowana jako wartość w domenie zakresu. Służy tylko jako wygodna składnia do powiedzenia:„bez ograniczeń”. Nic więcej.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bardziej niezawodne zestawienia z obsługą ICU w PostgreSQL 10

  2. Wstawić, przy zduplikowanej aktualizacji w PostgreSQL?

  3. Równoległość dochodzi do VACUUM

  4. Nie można usunąć bazy danych

  5. Zresetować bazę danych postgresql Django? kolor nie działa