Nhưng họ không. NULL
là một sự tiện lợi về cú pháp khi được sử dụng làm giới hạn của một dải ô, trong khi -infinity
/ infinity
là giá trị thực tế trong miền của phạm vi. Giá trị trừu tượng nghĩa là nhỏ hơn / lớn hơn bất kỳ giá trị nào khác, nhưng giá trị tuy nhiên (có thể được bao gồm hoặc loại trừ).
Ngoài ra, NULL
hoạt động cho bất kỳ loại phạm vi, trong khi hầu hết các loại dữ liệu không có giá trị đặc biệt như -infinity
/ infinity
. Lấy integer
và int4range
chẳng hạn.
Để hiểu rõ hơn, hãy xem xét chuỗi trong pgsql-general a_horse đã cung cấp :
Điều đó bao gồm date
, tất nhiên (chẳng hạn như Adrian đã nhận xét
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Nhưng cố gắng thảo luận về NULL
dưới dạng giá trị (khi được sử dụng như giới hạn của một phạm vi) là một cách tiếp cận gây hiểu lầm để bắt đầu. Nó không phải là một giá trị.
Một lần nữa, NULL
không được coi là giá trị trong miền của phạm vi. Nó chỉ phục vụ như một cú pháp thuận tiện để nói:"không bị ràng buộc". Không hơn thế.