sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor anser PostgreSQL NULL-grænser i områdetyper for at være forskellige fra uendelige grænser?

Men det gør de ikke. NULL er en syntaks-bekvemmelighed når det bruges som bundet af et område, mens -infinity / infinity er faktiske værdier i områdets domæne. Abstrakte værdier betyder mindre/større end enhver anden værdi, men værdier ikke desto mindre (som kan inkluderes eller udelukkes).

Også NULL virker for alle områdetype, mens de fleste datatyper ikke har specielle værdier som -infinity / infinity . Tag integer og int4range for eksempel.

For en bedre forståelse kan du overveje tråden i pgsql-general, der en_hest leveret :

Det inkluderer date , selvfølgelig (som Adrian kommenterede ):

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

Men prøver at diskutere NULL som værdi (når det bruges som bundet af et interval) er en vildledende tilgang til at begynde med. Det er ikke en værdi.

Igen, NULL behandles ikke som værdi i områdets domæne. Det tjener bare som praktisk syntaks at sige:"ubundet". Ikke mere end det.




  1. Mere end 60 sekunder eller minutter i MySQL-importfil

  2. At køre SQL-script gennem psql giver syntaksfejl, der ikke forekommer i PgAdmin

  3. WEEKOFYEAR() Eksempler – MySQL

  4. Hvad er en flad fildatabase? Hvordan adskiller det sig fra en relationel database?