Thí dụ
Tôi có một cái bàn
ID  myField
------------
 1  someValue
 2  NULL
 3  someOtherValuevà một biểu thức Boolean T-SQL có thể đánh giá thành TRUE, FALSE hoặc (do logic tạm thời của SQL) UNKNOWN:
SELECT * FROM myTable WHERE myField = 'someValue'
-- yields record 1Nếu tôi muốn nhận tất cả các bản ghi khác , tôi không thể đơn giản phủ nhận biểu thức
SELECT * FROM myTable WHERE NOT (myField = 'someValue')
-- yields only record 3Tôi biết tại sao điều này xảy ra (logic ternary) và tôi biết cách giải quyết vấn đề cụ thể này.
Tôi biết tôi chỉ có thể sử dụng myField = 'someValue' AND NOT myField IS NULLvà tôi nhận được một biểu thức "không thể đảo ngược" mà không bao giờ mang lại UNKNOWN:
SELECT * FROM myTable WHERE NOT (myField = 'someValue' AND myField IS NOT NULL)
-- yields records 2 and 3, hooray!Trường hợp chung
Bây giờ, hãy nói về trường hợp chung. Giả sử thay vì myField = 'someValue'tôi có một số biểu thức phức tạp liên quan đến nhiều trường và điều kiện, có thể là các truy vấn con:
SELECT * FROM myTable WHERE ...some complex Boolean expression...Có một cách chung để "đảo ngược" sự hết hạn này? Điểm thưởng nếu nó hoạt động cho các biểu hiện phụ:
SELECT * FROM myTable 
 WHERE ...some expression which stays... 
   AND ...some expression which I might want to invert...Tôi cần hỗ trợ SQL Server 2008-2014, nhưng nếu có một giải pháp tao nhã yêu cầu phiên bản mới hơn 2008, tôi cũng muốn nghe về nó.

