Tôi có một lớp hình dạng với một thuộc tính chứa NULL
các giá trị mà tôi muốn áp dụng bộ lọc cho các giá trị khác với NULL
.
Sử dụng gui có sẵn để xây dựng truy vấn như vậy, người ta sẽ thử bằng trực giác
"obj_art" != NULL
Có nghĩa là 'cung cấp cho tôi tất cả các tính năng có thuộc tính "obj_art" khác với NULL
' (những số này chắc chắn nhiều hơn 0). Kiểm tra truy vấn này mang lại một kết quả lạ theo quan điểm của tôi:
Vì vậy, những gì tôi đã học được cho đến nay là tôi có thể đạt được điều này bằng cách sử dụng
"obj_art" IS NOT NULL
Câu hỏi là, sự khác biệt giữa != NULL
và là IS NOT NULL
gì?
!=
không có nghĩa là "không"; nó có nghĩa là "không bằng". IS NOT
có nghĩa là "không phải" vì vậy tôi nghĩ rằng điều này là hoàn toàn trực quan :)
NULL
không phải là một giá trị tôi sẽ nói rằng nó là trực quan để cố gắng sử dụng =
hoặc !=
đó là cách bạn đánh giá bất kỳ giá trị nào khác. Không phải cho đến khi bạn biết rằng đó NULL
không phải là một giá trị mà nó thực sự trực quan để sử dụng IS NOT
hơn là !=
. Nhiều người không nhận thức được NULL
thực sự là gì.
NULL
nằm trong danh sách giá trị (cp. Ở trên) và do đó được coi là giá trị 'bình thường'. Và không có nút nào IS NULL
, hoặc tôi đã bỏ lỡ như vậy?! Vì vậy, khi chỉ cần gõ truy vấn như vậy và với kiến thức, điều đó NULL
phải được xử lý theo cách đặc biệt, chúng ta có thể thảo luận về trực giác, nhưng đối với shure không phải trong bối cảnh GUI NÀY.