PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa PostgreSQL menganggap batas NULL dalam tipe rentang berbeda dari batas tak terbatas?

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak Ada Kata Sandi yang Disediakan / Parameter Posisi tidak ditemukan PostgreSQL - Powershell

  2. Pemicu DB Postgres memanggil Fungsi Java

  3. Cara mengatur batas waktu koneksi di SQLAlchemy

  4. KESALAHAN:izin ditolak untuk urutan city_id_seq menggunakan Postgres

  5. Adakah kerugian menggunakan teks tipe data untuk menyimpan string?