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

मारियाडीबी NULLIF () समझाया गया

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

सिंटैक्स

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

NULLIF(expr1,expr2)

उदाहरण

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

SELECT NULLIF( 5, 5 );

परिणाम:

NULL

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

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

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

SELECT NULLIF( 5, 3 );

परिणाम:

5

इस मामले में, पहला तर्क दिया जाता है।

स्ट्रिंग्स

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

SELECT 
    NULLIF( 'Papaya', 'Papaya' ) AS "Same",
    NULLIF( 'Papaya', 'Salad' ) AS "Different";

परिणाम:

+------+-----------+
| Same | Different |
+------+-----------+
| NULL | Papaya    |
+------+-----------+

तारीख

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

SELECT 
    NULLIF( DATE '2000-10-30', DATE '2000-10-30' ) AS "Same",
    NULLIF( DATE '2000-10-30', DATE '1999-10-30' ) AS "Different";

परिणाम:

+------+------------+
| Same | Different  |
+------+------------+
| NULL | 2000-10-30 |
+------+------------+

अभिव्यक्ति

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

SELECT NULLIF( 10, 2 * 5 );

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

NULL

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

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

SELECT NULLIF( 10, 3 * 5 );

परिणाम:

10

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

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

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

SELECT 
    Name,
    LocalName
FROM country 
ORDER BY Name ASC
LIMIT 10;

परिणाम:

+---------------------+-----------------------+
| Name                | LocalName             |
+---------------------+-----------------------+
| Afghanistan         | Afganistan/Afqanestan |
| Albania             | Shqipëria             |
| Algeria             | Al-Jaza’ir/Algérie    |
| American Samoa      | Amerika Samoa         |
| Andorra             | Andorra               |
| Angola              | Angola                |
| Anguilla            | Anguilla              |
| Antarctica          | –                     |
| Antigua and Barbuda | Antigua and Barbuda   |
| Argentina           | Argentina             |
+---------------------+-----------------------+

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

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

SELECT 
    Name,
    LocalName,
    NULLIF(LocalName, Name) AS "Local Name Different"
FROM country 
ORDER BY Name ASC
LIMIT 10;

परिणाम:

+---------------------+-----------------------+-----------------------+
| Name                | LocalName             | Local Name Different  |
+---------------------+-----------------------+-----------------------+
| Afghanistan         | Afganistan/Afqanestan | Afganistan/Afqanestan |
| Albania             | Shqipëria             | Shqipëria             |
| Algeria             | Al-Jaza’ir/Algérie    | Al-Jaza’ir/Algérie    |
| American Samoa      | Amerika Samoa         | Amerika Samoa         |
| Andorra             | Andorra               | NULL                  |
| Angola              | Angola                | NULL                  |
| Anguilla            | Anguilla              | NULL                  |
| Antarctica          | –                     | –                     |
| Antigua and Barbuda | Antigua and Barbuda   | NULL                  |
| Argentina           | Argentina             | NULL                  |
+---------------------+-----------------------+-----------------------+

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

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

SELECT 
    Name,
    LocalName
FROM country 
WHERE NULLIF(LocalName, Name) IS NOT NULL
ORDER BY Name ASC
LIMIT 10;

परिणाम:

+----------------+-----------------------+
| Name           | LocalName             |
+----------------+-----------------------+
| Afghanistan    | Afganistan/Afqanestan |
| Albania        | Shqipëria             |
| Algeria        | Al-Jaza’ir/Algérie    |
| American Samoa | Amerika Samoa         |
| Antarctica     | –                     |
| Armenia        | Hajastan              |
| Austria        | Österreich            |
| Azerbaijan     | Azärbaycan            |
| Bahamas        | The Bahamas           |
| Bahrain        | Al-Bahrayn            |
+----------------+-----------------------+

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

NULLIF() बनाम CASE

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

NULLIF(expr1,expr2)

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

CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END

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

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

SELECT NULLIF( 10 );

परिणाम:

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. मारियाडीबी क्लस्टर में नया क्या है 10.4

  2. मारियाडीबी में एक तारीख से एक महीना घटाएं

  3. मारियाडीबी JSON_CONTAINS_PATH () समझाया गया

  4. MySQL और MariaDB के लिए प्रतिकृति विफलता को कैसे नियंत्रित करें

  5. मारियाडीबी सर्वर 10.5 में नया क्या है?