टी एल; डॉ
यह NULLसुरक्षित समान ऑपरेटर है।
नियमित =ऑपरेटर की तरह, दो मूल्यों की तुलना की जाती है और परिणाम या तो 0(बराबर नहीं) या 1(बराबर) होता है; दूसरे शब्दों में: 'a' <=> 'b'पैदावार 0और 'a' <=> 'a'पैदावार 1।
नियमित =ऑपरेटर के विपरीत , मूल्यों का NULLकोई विशेष अर्थ नहीं है और इसलिए यह कभी भी NULLसंभावित परिणाम के रूप में नहीं आता है ; इसलिए: 'a' <=> NULLपैदावार 0और NULL <=> NULLपैदावार 1।
उपयोगिता
यह तब उपयोगी हो सकता है जब दोनों ऑपरेंड शामिल हो सकते हैं NULLऔर आपको दो कॉलम के बीच एक सुसंगत तुलना परिणाम की आवश्यकता होती है।
एक अन्य उपयोग-मामला तैयार बयानों के साथ है, उदाहरण के लिए:
... WHERE col_a <=> ? ...
यहां, प्लेसहोल्डर या तो स्केलर मान हो सकता है या NULLक्वेरी के बारे में कुछ भी बदलने के बिना हो सकता है।
संबंधित संचालक
इसके अलावा <=>वहाँ भी दो अन्य ऑपरेटरों के खिलाफ तुलना करने के लिए इस्तेमाल किया जा सकता हैं NULL, अर्थात् IS NULLऔर IS NOT NULL; वे ANSI मानक का हिस्सा हैं और इसलिए अन्य डेटाबेस पर समर्थित हैं, इसके विपरीत <=>, जो MySQL-specific है।
आप उन्हें MySQL की विशेषज्ञता के रूप में सोच सकते हैं <=>:
'a' IS NULL ==> 'a' <=> NULL
'a' IS NOT NULL ==> NOT('a' <=> NULL)
इसके आधार पर, आपकी विशेष क्वेरी (टुकड़ा) को और अधिक पोर्टेबल में परिवर्तित किया जा सकता है:
WHERE p.name IS NULL
सहयोग
SQL: 2003 मानक ने इसके लिए एक विधेय प्रस्तुत किया, जो बिल्कुल MySQL के <=>ऑपरेटर की तरह काम करता है , निम्न रूप में:
IS [NOT] DISTINCT FROM
निम्नलिखित सार्वभौमिक रूप से समर्थित है, लेकिन सापेक्ष जटिल है:
CASE WHEN (a = b) or (a IS NULL AND b IS NULL)
THEN 1
ELSE 0
END = 1
spaceshipऑपरेटर