PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tại sao PostgreSQL coi các ranh giới NULL trong các loại phạm vi là khác biệt với các ranh giới vô hạn?

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 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 integerint4range 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ế.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ định lược đồ PostgreSQL trong Django

  2. Làm cách nào tôi có thể lấy một hàm băm của toàn bộ bảng trong postgresql?

  3. Làm cách nào để loại bỏ các hàng trùng lặp với các phụ thuộc khóa ngoại?

  4. Tạo kết xuất Postgres và lưu vào một máy chủ khác

  5. in giá trị của một biến trong postgresql