Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL में यह ऑपरेटर <=> क्या है?

TL;DR

यह NULL सुरक्षित बराबर ऑपरेटर।

नियमित = की तरह ऑपरेटर, दो मानों की तुलना की जाती है और परिणाम 0 . है (बराबर नहीं) या 1 (बराबर); दूसरे शब्दों में:'a' <=> 'b' पैदावार 0 और 'ए' <=> 'ए' पैदावार 1

नियमित = . के विपरीत ऑपरेटर, NULL . के मान इसका कोई विशेष अर्थ नहीं है और इसलिए यह कभी भी NULL उत्पन्न नहीं करता है संभावित परिणाम के रूप में; तो:'ए' <=> नल पैदावार 0 और नल <=> शून्य पैदावार 1

उपयोगिता

यह तब उपयोगी हो सकता है जब दोनों ऑपरेंड में NULL हो सकता है और आपको दो स्तंभों के बीच एक सुसंगत तुलना परिणाम की आवश्यकता है।

एक अन्य उपयोग-मामला तैयार कथनों के साथ है, उदाहरण के लिए:

... WHERE col_a <=> ? ...

यहां, प्लेसहोल्डर या तो एक अदिश मान हो सकता है या NULL क्वेरी के बारे में कुछ भी बदले बिना।

संबंधित ऑपरेटर

इसके अलावा <=> दो अन्य ऑपरेटर भी हैं जिनका उपयोग NULL . से तुलना करने के लिए किया जा सकता है , अर्थात् IS NULL और शून्य नहीं है; वे एएनएसआई मानक का हिस्सा हैं और इसलिए <=> . के विपरीत, अन्य डेटाबेस पर समर्थित हैं , जो MySQL-विशिष्ट है।

आप उन्हें 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC स्टेटमेंट उदाहरण - बैच इंसर्ट, अपडेट, डिलीट

  2. केकपीएचपी में एक मॉडल के लिए गतिशील रूप से एकाधिक डेटाबेस का उपयोग कैसे करें

  3. MySQL ATAN2 () फ़ंक्शन - 2 मानों की चाप स्पर्शरेखा लौटाएं

  4. त्रुटि:त्रुटि 1005:तालिका नहीं बना सकता (त्रुटि:121)

  5. टेबल्स को लॉक किए बिना MySQLDump चलाएँ