sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför anser PostgreSQL att NULL-gränser i intervalltyper är olika från oändliga gränser?

Men det gör de inte. NULL är en syntaxbekvämlighet när det används som gräns för ett intervall, medan -infinity / infinity är faktiska värden inom områdets domän. Abstrakta värden betyder mindre/större än alla andra värden, men värden ändå (som kan inkluderas eller uteslutas).

Även NULL fungerar för alla områdestyp, medan de flesta datatyper inte har speciella värden som -infinity / infinity . Ta integer och int4range till exempel.

För en bättre förståelse, överväg tråden i pgsql-general som en_häst tillhandahålls :

Det inkluderar date , naturligtvis (som Adrian kommenterade ):

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

Men försöker diskutera NULL som värde (när det används som gräns för ett intervall) är ett missvisande tillvägagångssätt till att börja med. Det är inte ett värde.

Återigen, NULL behandlas inte som värde i områdets domän. Det fungerar bara som en bekväm syntax att säga:"obegränsad". Inte mer än så.




  1. Navigera från App A till App B med samma referenser - APEX 19.2

  2. MySQL pid slutade (kan inte starta mysql)

  3. Upptäck SQL-ö över flera parametrar och villkor

  4. Mappning av sammansatta nycklar med EF-kod först