Rõ ràng oracle dường như không phân biệt giữa các chuỗi rỗng và null. Ví dụ.Oracle không phân biệt giữa các giá trị rỗng và các chuỗi rỗng?
Select name from TABLE_A where id=100;
ID NAME
100 null
Update TABLE_A set NAME='' where id=100;
SELECT -->
ID NAME
100 null
SELECT length(NAME) FROM TABLE_A WHERE id=100;
null
Tôi không thể nghĩ ra bất kỳ lý do chính đáng tại sao Oracle sẽ được xây dựng để hành xử theo cách này (nó làm điều này trong sqlplus cũng? -I'm truy cập thông qua một giao diện java, bài viết tham chiếu sử dụng một khách hàng php).
Bạn sẽ ít nhất muốn phân biệt 0 độ dài với độ dài không xác định? Đây có phải là một vấn đề được biết đến? Hành vi có chủ ý đối với một số mục đích cụ thể? Một tranh chấp dài hạn trong lý thuyết cơ sở dữ liệu? Đưa cái gì?
(Điều này được thúc đẩy bởi câu trả lời Matt Solnit để this question.)
Câu hỏi này đã được đăng là có liên quan, mặc dù nó không giải quyết được "tại sao": http://stackoverflow.com/questions/1171196/difference-between-varchar-and-varchar2 –