Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách viết lại IS DISTINCT FROM và IS NOT DISTINCT FROM?

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem bảng có tồn tại hay không và nếu bảng không tồn tại, hãy tạo bảng trong SQL Server 2008

  2. Ước tính tiết kiệm nén dữ liệu trong SQL Server

  3. Giải pháp cho cách đọc tệp nhật ký giao dịch SQL Server mà không có bất kỳ lỗi nào

  4. CROSS JOIN so với INNER JOIN trong SQL

  5. T-SQL - Bí danh sử dụng =so với as