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

MySQL NULLIF () समझाया गया

MySQL में, NULLIF() एक प्रवाह नियंत्रण फ़ंक्शन है जो NULL लौटाता है यदि इसके दोनों तर्क समकक्ष हैं। अन्यथा यह पहला तर्क देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

NULLIF(expr1,expr2)

उदाहरण

प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:

SELECT NULLIF( 7, 7 );

परिणाम:

NULL

इस मामले में, दोनों तर्क समान हैं और इसलिए परिणाम NULL . है ।

जब तर्क समतुल्य न हों

यहां बताया गया है कि जब तर्क समकक्ष नहीं होते हैं तो क्या होता है:

SELECT NULLIF( 7, 8 );

परिणाम:

7

तर्क अलग हैं और इसलिए पहला तर्क दिया जाता है।

स्ट्रिंग्स

यहां एक उदाहरण दिया गया है जो स्ट्रिंग की तुलना करता है:

SELECT 
    NULLIF( 'Bean', 'Bean' ) AS "Same",
    NULLIF( 'Bean', 'Mushroom' ) AS "Different";

परिणाम:

Same	Different
----    ---------
NULL	Bean

तिथियां

यहां एक उदाहरण दिया गया है जो तिथियों की तुलना करता है:

SELECT 
    NULLIF( DATE '2030-12-20', DATE '2030-12-20' ) AS "Same",
    NULLIF( DATE '2030-12-20', DATE '2035-08-15' ) AS "Different";

परिणाम:

Same	Different
----    ----------
NULL	2030-12-20

अभिव्यक्ति

NULLIF() भावों के वर्तमान मूल्य का मूल्यांकन करता है। इसलिए, अगर हम इस तरह से एक व्यंजक पास करते हैं:

SELECT NULLIF( 8, 2 * 4 );

हमें यह मिलता है:

NULL

2 को 4 से गुणा करने पर 8 होता है, और इसलिए दोनों तर्क बराबर होते हैं।

यदि हम दूसरा तर्क बदलते हैं तो यहां क्या होता है:

SELECT NULLIF( 8, 2 * 3 );

परिणाम:

8

पहला तर्क वापस कर दिया गया है।

एक डेटाबेस उदाहरण

मान लीजिए कि हम निम्नलिखित क्वेरी चलाते हैं:

SELECT 
    Name,
    LocalName
FROM country 
WHERE Region = 'Southern Europe'
ORDER BY Name;

परिणाम:

+-------------------------------+--------------------------------+
| Name                          | LocalName                      |
+-------------------------------+--------------------------------+
| Albania                       | Shqipëria                      |
| Andorra                       | Andorra                        |
| Bosnia and Herzegovina        | Bosna i Hercegovina            |
| Croatia                       | Hrvatska                       |
| Gibraltar                     | Gibraltar                      |
| Greece                        | Elláda                         |
| Holy See (Vatican City State) | Santa Sede/Città del Vaticano  |
| Italy                         | Italia                         |
| Macedonia                     | Makedonija                     |
| Malta                         | Malta                          |
| Portugal                      | Portugal                       |
| San Marino                    | San Marino                     |
| Slovenia                      | Slovenija                      |
| Spain                         | España                         |
| Yugoslavia                    | Jugoslavija                    |
+-------------------------------+--------------------------------+

यहां, हमारे पास बाएं कॉलम में देश के नाम हैं, और संबंधित देश के लिए स्थानीय नाम दाईं ओर है।

आइए जोड़ें NULLIF() हमारी क्वेरी के तीसरे कॉलम में:

SELECT
    Name,
    LocalName,
    NULLIF(LocalName, Name) AS "Local Name if Different"
FROM country 
WHERE Region = 'Southern Europe'
ORDER BY Name;

परिणाम:

+-------------------------------+--------------------------------+--------------------------------+
| Name                          | LocalName                      | Local Name if Different        |
+-------------------------------+--------------------------------+--------------------------------+
| Albania                       | Shqipëria                      | Shqipëria                      |
| Andorra                       | Andorra                        | NULL                           |
| Bosnia and Herzegovina        | Bosna i Hercegovina            | Bosna i Hercegovina            |
| Croatia                       | Hrvatska                       | Hrvatska                       |
| Gibraltar                     | Gibraltar                      | NULL                           |
| Greece                        | Elláda                         | Elláda                         |
| Holy See (Vatican City State) | Santa Sede/Città del Vaticano  | Santa Sede/Città del Vaticano  |
| Italy                         | Italia                         | Italia                         |
| Macedonia                     | Makedonija                     | Makedonija                     |
| Malta                         | Malta                          | NULL                           |
| Portugal                      | Portugal                       | NULL                           |
| San Marino                    | San Marino                     | NULL                           |
| Slovenia                      | Slovenija                      | Slovenija                      |
| Spain                         | España                         | España                         |
| Yugoslavia                    | Jugoslavija                    | Jugoslavija                    |
+-------------------------------+--------------------------------+--------------------------------+

हम देख सकते हैं कि तीसरा कॉलम स्थानीय नाम तभी लौटाता है, जब वह Name के मान से अलग हो कॉलम। अगर ऐसा ही है, तो NULL लौटा दिया गया है।

हम NULLIF() . का भी उपयोग कर सकते हैं हमारे क्वेरी परिणामों को फ़िल्टर करने के लिए:

SELECT 
    Name,
    LocalName
FROM country 
WHERE Region = 'Southern Europe'
AND NULLIF(LocalName, Name) IS NOT NULL
ORDER BY Name;

परिणाम:

+-------------------------------+--------------------------------+
| Name                          | LocalName                      |
+-------------------------------+--------------------------------+
| Albania                       | Shqipëria                      |
| Bosnia and Herzegovina        | Bosna i Hercegovina            |
| Croatia                       | Hrvatska                       |
| Greece                        | Elláda                         |
| Holy See (Vatican City State) | Santa Sede/Città del Vaticano  |
| Italy                         | Italia                         |
| Macedonia                     | Makedonija                     |
| Slovenia                      | Slovenija                      |
| Spain                         | España                         |
| Yugoslavia                    | Jugoslavija                    |
+-------------------------------+--------------------------------+

इस मामले में, हमने केवल उन पंक्तियों को लौटाया है जहां स्थानीय नाम Name . से भिन्न है कॉलम।

NULLIF() बनाम CASE

निम्नलिखित कोड:

NULLIF(expr1,expr2)

निम्नलिखित CASE के बराबर है अभिव्यक्ति:

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

गलत पैरामीटर गणना

तर्कों की गलत संख्या पास करने से त्रुटि होती है:

SELECT NULLIF( 5 );

परिणाम:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'NULLIF'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL टाइमडिफ आउटपुट को दिन, घंटे, मिनट, दूसरे प्रारूप में परिवर्तित करता है

  2. तालिका बनाने में 1064 त्रुटि ... TYPE=MYISAM

  3. चयन के साथ सम्मिलित करें

  4. MySQL डेटाबेस को Amazon RDS से DigitalOcean में माइग्रेट करना

  5. MySQL SELECT क्वेरी में IF स्टेटमेंट का उपयोग करना