IS DISTINCT FROM
vị từ được giới thiệu dưới dạng tính năng T151 của SQL:1999 và phủ định có thể đọc được của nó, IS NOT DISTINCT FROM
, đã được thêm vào dưới dạng tính năng T152 của SQL:2003. Mục đích của các vị từ này là để đảm bảo rằng kết quả của việc so sánh hai giá trị là Đúng hoặc Sai , không bao giờ Không xác định .
Các vị từ này hoạt động với bất kỳ kiểu nào có thể so sánh được (bao gồm hàng, mảng và nhiều tập hợp) khiến việc mô phỏng chính xác chúng trở nên khá phức tạp. Tuy nhiên, SQL Server không hỗ trợ hầu hết các kiểu này, vì vậy chúng ta có thể tiến xa hơn bằng cách kiểm tra các đối số / toán hạng null:
-
a IS DISTINCT FROM b
có thể được viết lại thành:((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))
-
a IS NOT DISTINCT FROM b
có thể được viết lại thành:(NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
Câu trả lời của chính bạn không chính xác vì nó không thể coi là FALSE OR NULL
đánh giá thành Không xác định . Ví dụ:NULL IS DISTINCT FROM NULL
nên đánh giá thành Sai . Tương tự, 1 IS NOT DISTINCT FROM NULL
nên đánh giá thành Sai . Trong cả hai trường hợp, biểu thức của bạn mang lại kết quả Không xác định .