Oracle đối xử '' và NULL giống nhau. Khi chèn '', không có chuyển đổi '' thành NULL, chỉ đơn thuần là một cách giải thích '' NULL
giống như cách mà từ NULL được hiểu là NULL
hoặc rtrim ('a', 'a') được hiểu là NULL
.
Dưới đây là một minh họa bằng cách sử dụng bảng sau đây và chèn:
drop table t1;
create table t1 (c1 varchar2(10));
insert into t1 (c1) values ('');
Chèn ở trên đã chèn một giá trị NULL cho c1. Bạn có thể chọn hàng đó như sau:
SELECT c1 FROM t1;
Khi bạn thêm mệnh đề WHERE để so sánh đẳng thức và một trong các giá trị được so sánh là NULL, kết quả sẽ luôn là ẩn số. Unknown sẽ đánh giá thành false ngoại trừ các hoạt động tiếp theo trên một giá trị không xác định sẽ tạo ra các giá trị không xác định. Tất cả các trả về sau không có hàng vì các mệnh đề WHERE chứa các điều kiện sẽ không bao giờ đúng bất kể dữ liệu.
SELECT c1 FROM t1 WHERE c1 = '';
SELECT c1 FROM t1 WHERE c1 = NULL;
SELECT c1 FROM t1 WHERE '' = '';
SELECT c1 FROM t1 WHERE NULL = NULL;
Oracle cung cấp một cú pháp đặc biệt để truy xuất các hàng với một cột cụ thể có giá trị null - IS NULL
.
SELECT c1 FROM t1 WHERE c1 IS NULL;
Có một vài điều kiện trong đó oracle so sánh NULLS đối xử với chúng bằng với các giá trị NULL khác, chẳng hạn như trong các câu lệnh DECODE và trong các khóa ghép.
Thông tin thêm có thể được tìm thấy trong Tài liệu tham khảo ngôn ngữ SQL .