Tapi mereka tidak. NULL
adalah kemudahan sintaks ketika digunakan sebagai batas rentang, sedangkan -infinity
/ infinity
adalah nilai actual yang sebenarnya dalam domain jangkauan. Nilai abstrak yang berarti lebih kecil / lebih besar dari nilai lainnya, tetapi nilai tetap saja (yang dapat disertakan atau dikecualikan).
Juga, NULL
bekerja untuk apa saja tipe rentang, sementara sebagian besar tipe data tidak memiliki nilai khusus seperti -infinity
/ infinity
. Ambil integer
dan int4range
misalnya.
Untuk pemahaman yang lebih baik, pertimbangkan utas di pgsql-general yang a_horse disediakan :
Setiap tipe data bisa NULL
, bahkan domain yang secara eksplisit NOT NULL
. Lihat:
Itu termasuk date
, tentu saja (seperti Komentar Adrian
):
test=> SELECT NULL::date, pg_typeof(NULL::date);
date | pg_typeof
------+-----------
| date
(1 row)
Tapi mencoba membahas NULL
sebagai nilai (ketika digunakan sebagai batas rentang) adalah pendekatan yang menyesatkan untuk memulai. Ini bukan nilai.
Sekali lagi, NULL
tidak diperlakukan sebagai nilai dalam domain rentang. Itu hanya berfungsi sebagai sintaks yang nyaman untuk mengatakan:"tidak terbatas". Tidak lebih dari itu.