मारियाडीबी में, 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'