আমি এমন একটি দৃশ্য তৈরি করার চেষ্টা করছি যেখানে আমি চাই একটি কলামটি কেবল সত্য বা মিথ্যা হোক। যাইহোক, দেখে মনে হচ্ছে আমি যাই করুক না কেন, এসকিউএল সার্ভার (২০০৮) বিশ্বাস করে আমার বিট কলামটি কোনওভাবে নালার হতে পারে।
আমার কাছে "পণ্য" নামে একটি টেবিল রয়েছে যার সাথে কলাম "স্থিতি" রয়েছে INT, NULL
। একটি দৃশ্যে, আমি প্রোডাক্টের প্রতিটি সারির জন্য একটি সারি ফিরিয়ে আনতে চাই, যদি বিআইটি কলামটি প্রযোজ্য হয় তবে Product.Status কলামটি 3 এর সমান হয়, অন্যথায় বিট ক্ষেত্রটি মিথ্যা হওয়া উচিত।
উদাহরণ এসকিউএল
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
যদি আমি এই ক্যোয়ারিকে ভিউ হিসাবে সংরক্ষণ করি এবং অবজেক্ট এক্সপ্লোরারে কলামগুলি দেখি, কলামটি হাসস্ট্যাটাস সেট করা আছে BIT, NULL
। তবে এটি কখনই শূন্য হওয়া উচিত নয়। এই কলামটি জোর করতে আমি কি কিছু যাদু এসকিউএল ট্রিক ব্যবহার করতে পারি NOT NULL
।
লক্ষ্য করুন যে, আমি যদি CAST()
চারপাশে সরিয়ে ফেলি CASE
, কলামটি সঠিকভাবে সেট করা আছে NOT NULL
তবে কলামটির ধরণ সেট করা আছে INT
যা আমি চাই না। আমি এটা হতে চাই BIT
। :-)