print @T & @F
রিটার্নস 0
&
হয় Bitwise ও অপারেটর।
& বিটওয়াস অপারেটর উভয় এক্সপ্রেশনগুলির জন্য প্রতিটি অনুরূপ বিট গ্রহণ করে দুটি এক্সপ্রেশনগুলির মধ্যে কিছুটা লজিক্যাল লজিক্যাল এবং সঞ্চালন করে। ফলাফলের বিটগুলি 1 সেট করা থাকে এবং কেবলমাত্র যদি উভয় বিট (বর্তমান বিটের সমাধানের জন্য) ইনপুট এক্সপ্রেশনগুলির মান 1 হয়; অন্যথায়, ফলাফলের বিট 0 তে সেট করা আছে।
আপনার ক্ষেত্রে @T & @F
সমাধান হয় 1 & 0
এবং তাই BIT
মান সহ ডেটাটাইপের ফলাফল দেয়0
PRINT
অপারেটরকে পাস করার পরে এই bit
ফলাফলটি স্পষ্টভাবে স্ট্রিংয়ে ফেলে দেওয়া হয় এবং ক্লায়েন্টের কাছে ফলাফল আউটপুট।
print @T and @F
এটির সাথে বেশ ভুল হয়েছে।
AND
দুটি বুলিয়ান এক্সপ্রেশন সম্মিলন করে এবং সত্যই প্রত্যাবর্তন করে যখন উভয় এক্সপ্রেশন সত্য হয়
bit
বুলিয়ান হিসাবে একই নয়। এগুলি বিনিময়যোগ্য নয় এবং প্রয়োজনের সময় এসকিউএল সার্ভার সুস্পষ্টভাবে bit
কোনও বুলিয়ান ডেটাটাইপে কাস্ট করবে না (এসকিউএল সার্ভার এসকিউএল বুলিয়ান ডেটাটাইপ প্রয়োগ করে না))
সুতরাং আপনার মত একটি এক্সপ্রেশন ব্যবহার করা প্রয়োজন
@T = 'TRUE' AND @F = 'TRUE'
পরিবর্তে
@T and @F
তারপরেও আপনার সমস্যাগুলি শেষ হয়নি - PRINT
যাইহোক কোনও বুলিয়ান এক্সপ্রেশন গ্রহণ করে না। আপনি CASE
নীচের মত প্রকাশ করতে পারেন ।
PRINT CASE
WHEN (@T = 'TRUE' AND @F = 'TRUE') THEN 'True'
WHEN NOT (@T = 'TRUE' AND @F = 'TRUE') THEN 'False'
ELSE 'Unknown' -- SQL uses three valued logic
END