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

Tại sao Oracle 9i xử lý một chuỗi rỗng là NULL?

Tôi tin rằng câu trả lời là Oracle rất rất lâu đời.

Quay lại những ngày xa xưa trước khi có tiêu chuẩn SQL, Oracle đã đưa ra quyết định thiết kế làm trống các chuỗi trong VARCHAR / VARCHAR2 các cột là NULL và rằng chỉ có một ý nghĩa về NULL (có những nhà lý thuyết quan hệ sẽ phân biệt giữa dữ liệu chưa bao giờ được nhắc, dữ liệu mà câu trả lời tồn tại nhưng người dùng không biết, dữ liệu không có câu trả lời, v.v. tất cả tạo thành một số nghĩa của NULL ).

Vào thời điểm tiêu chuẩn SQL ra đời và đồng ý rằng NULL và chuỗi trống là các thực thể riêng biệt, đã có những người dùng Oracle có mã giả định rằng cả hai là tương đương. Vì vậy, về cơ bản Oracle đã bị bỏ lại với các tùy chọn phá vỡ mã hiện có, vi phạm tiêu chuẩn SQL hoặc giới thiệu một số loại tham số khởi tạo có thể thay đổi chức năng của một số lượng lớn truy vấn tiềm ẩn. Vi phạm tiêu chuẩn SQL (IMHO) là cách ít gây gián đoạn nhất trong ba tùy chọn này.

Oracle đã để ngỏ khả năng rằng VARCHAR kiểu dữ liệu sẽ thay đổi trong bản phát hành trong tương lai để tuân thủ tiêu chuẩn SQL (đó là lý do tại sao mọi người sử dụng VARCHAR2 trong Oracle vì hành vi của kiểu dữ liệu đó được đảm bảo sẽ giữ nguyên về sau).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối một cột theo một nhóm trong R

  2. Trình tự ngủ đông trên oracle, @GeneratedValue (chiến lược =GenerationType.AUTO)

  3. java.sql.SQLException:ORA-03115:kiểu dữ liệu hoặc đại diện mạng không được hỗ trợ

  4. Chia các giá trị được phân tách bằng dấu phẩy thành các cột trong Oracle

  5. Thêm ngày vào dấu thời gian