"এবং" এবং "এবং" এর মধ্যে পার্থক্য


13

আমি যৌক্তিক ক্রিয়াকলাপগুলির জন্য অগ্রাধিকারের ক্রমটি বোঝার চেষ্টা করছি এবং নিম্নলিখিত কোডটি রয়েছে:

declare @T bit ='TRUE'
declare @F bit ='False'

print @T and @F

এবং এটি হিসাবে একটি ত্রুটি প্রদান করে

মূলশব্দ 'এবং' এর নিকটে ভুল সিনট্যাক্স।

আমি 'এবং' এর সাথে 'এবং' প্রতিস্থাপন করেছি এবং কোডটি আবার কাজ করে। আগের কোডটি কেন কাজ করল না? আমি এসকিউএল সার্ভার ব্যবহার করছি।

উত্তর:


29
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

আপনার উত্তরের জন্য ধন্যবাদ! আমি সত্যই তা থেকে অনেক কিছু শিখেছি!
জেসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.