সমস্যাটি হল এই যে শূন্য এমনকি নিজেই না কিছু সমান হতে বিবেচনা করা হয় না, কিন্তু অদ্ভুত অংশ যে হয় না নিজেই সমান।
নিম্নলিখিত বিবৃতিগুলি বিবেচনা করুন (যা এসকিউএল সার্ভার টি-এসকিউএলে বিটিডব্লিউ অবৈধ তবে এটি মাই-এসকিউএলে বৈধ, তবে এটি এএনএসআই নালকে সংজ্ঞায়িত করে এবং এসকিউএল সার্ভারে কেস স্টেটমেন্ট ইত্যাদি ব্যবহার করে যাচাই করা যায়)
SELECT NULL = NULL -- Results in NULL
SELECT NULL <> NULL -- Results in NULL
সুতরাং প্রশ্নের সঠিক / মিথ্যা উত্তর নেই, পরিবর্তে উত্তরটিও নালাগুলি।
এটিতে অনেকগুলি অন্তর্ভুক্ত রয়েছে, উদাহরণস্বরূপ
- ক্ষেত্রে বিবৃতি, যা যে কোন নাল মান সবসময় Else clause ব্যবহার করবে যদি না আপনি স্পষ্টভাবে ব্যবহার করেন, তখন শূন্য অবস্থায় (IS না শর্ত )
WHEN NULL
- স্ট্রিং সংক্ষিপ্তকরণ, হিসাবে
SELECT a + NULL -- Results in NULL
- যেখানে বা যেখানে শর্তে নেই, এমন কোনও ক্ষেত্রে যেমন আপনি সঠিক ফলাফল চান তা নিশ্চিত করে যে কোনও নাল মান ফিল্টার করার জন্য সংযুক্ত সাব-কোয়েরিতে নিশ্চিত করুন।
কেউ এসকিউএল সার্ভারে উল্লেখ করে এই আচরণকে ওভাররাইড করতে পারে SET ANSI_NULLS OFF
, তবে এটি প্রস্তাবিত নয় এবং এটি করা উচিত নয় কারণ এটি অনেকগুলি সমস্যার কারণ হতে পারে, কেবলমাত্র স্ট্যান্ডার্ডের বিচ্যুতির কারণে।
(পার্শ্ব নোট হিসাবে, মাই-এসকিউএলে <=>
নাল তুলনার জন্য একটি বিশেষ অপারেটর ব্যবহার করার বিকল্প রয়েছে ))
তুলনায়, সাধারণ প্রোগ্রামিং ভাষাগুলিতে নালকে একটি নিয়মিত মান হিসাবে বিবেচনা করা হয় এবং এটি নিজের সমান হয়, তবে এটি NAN মান যা নিজের সাথেও সমান নয়, তবে এটি নিজের সাথে তুলনা করার সময় অন্তত এটি 'মিথ্যা' প্রত্যাবর্তন করে, (এবং সমান না হিসাবে পরীক্ষা করার সময় বিভিন্ন প্রোগ্রামিং ভাষার বিভিন্ন প্রয়োগ রয়েছে)।
তবে লক্ষ করুন যে বেসিক ভাষায় (যেমন VB ইত্যাদি) কোনও 'নাল' কীওয়ার্ড নেই এবং এর পরিবর্তে কেউ 'কিছুই না' কীওয়ার্ড ব্যবহার করে যা সরাসরি তুলনায় ব্যবহার করা যায় না এবং এর পরিবর্তে এসকিউএল হিসাবে 'আইএস' ব্যবহার করা দরকার, তবে এটি বাস্তবে নিজের সমান (অপ্রত্যক্ষ তুলনা ব্যবহার করার সময়)।