উদাহরণ
আমার একটা টেবিল আছে
ID myField
------------
1 someValue
2 NULL
3 someOtherValue
এবং একটি টি এসকিউএল বুলিয়ান এক্সপ্রেশন যা সত্য, মিথ্যা বা (এসকিউএল এর ত্রৈমাসিক যুক্তির কারণে) অজানা:
SELECT * FROM myTable WHERE myField = 'someValue'
-- yields record 1
আমি যদি অন্য সমস্ত রেকর্ড পেতে চাই , আমি কেবল প্রকাশটি অস্বীকার করতে পারি না
SELECT * FROM myTable WHERE NOT (myField = 'someValue')
-- yields only record 3
আমি জানি যে এটি কীভাবে ঘটে (টের্নারি লজিক) এবং আমি জানি যে কীভাবে এই নির্দিষ্ট সমস্যাটি সমাধান করা যায়।
আমি জানি আমি কেবল ব্যবহার করতে পারি myField = 'someValue' AND NOT myField IS NULL
এবং আমি একটি "ইনভারটিভেবল" এক্সপ্রেশন পাই যা কখনই অজানা ফল দেয় না:
SELECT * FROM myTable WHERE NOT (myField = 'someValue' AND myField IS NOT NULL)
-- yields records 2 and 3, hooray!
জেনারেল কেস
এখন, আসুন সাধারণ কেস সম্পর্কে কথা বলা যাক। এর পরিবর্তে myField = 'someValue'
আমার কিছু ক্ষেত্র এবং শর্তাদি জড়িত কিছু জটিল ভাব প্রকাশের পরিবর্তে বলুন , সম্ভবত উপশক্তি:
SELECT * FROM myTable WHERE ...some complex Boolean expression...
এই সমাপ্তিটিকে "বিপরীত" করার কোনও সাধারণ উপায় আছে? বোনাস পয়েন্টগুলি যদি এটি সফলতার জন্য কাজ করে:
SELECT * FROM myTable
WHERE ...some expression which stays...
AND ...some expression which I might want to invert...
আমার এসকিউএল সার্ভার ২০০৮-২০১৪ সমর্থন করতে হবে, তবে ২০০৮ এর চেয়ে বেশি নতুন সংস্করণের প্রয়োজনে যদি একটি দুর্দান্ত সমাধান আসে তবে আমি এটি সম্পর্কে শুনতে আগ্রহী।