टी एल; डॉ
यह 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
ऑपरेटर