2010-12-30 30 views

Trả lời

14

Có thể ... Khái niệm giá trị NULL là một nguồn gây nhầm lẫn chung cho người mới đến SQL, người thường nghĩ rằng NULL giống như một chuỗi rỗng '' hoặc giá trị bằng 0 .

Đây không phải là trường hợp. Về mặt khái niệm, NULL có nghĩa là "một giá trị không xác định bị thiếu" và nó được xử lý hơi khác so với các giá trị khác. Ví dụ: để kiểm tra NULL, bạn không thể sử dụng toán tử so sánh số học như =, < hoặc <> trong hầu hết các DBMS.

14

Phụ thuộc vào DBMS.

Oracle không: '' và null là giống hệt nhau

SQL-Server yes: '' và null là những giá trị khác nhau.

+0

+1. Tôi đập đầu tôi thực sự khó khăn khi tôi chuyển sang Oracle từ MySQL. 'where code = ''' không còn trả lại "chuỗi rỗng" ... – Ronnis

1

Như Daniel đã nói, có bạn có thể chèn chuỗi có độ dài bằng không vào trường NOT NULL (ngoại trừ trên Oracle). Tuy nhiên, nếu bạn muốn loại trừ chuỗi zero-length là tốt, bạn có thể thêm một hạn chế:

ALTER TABLE xyz ADD CONSTRAINT CHECK (b LIKE '_%'); 

Hầu hết các cơ sở dữ liệu hiện đại có một nhà điều hành thường xuyên thể hiện hoặc hoạt động bạn có thể sử dụng cho những hạn chế là tốt, nhưng chính xác cú pháp khác nhau từ cơ sở dữ liệu đến cơ sở dữ liệu.

Các vấn đề liên quan