COALESCE, NULLIF और ISNULL
डिफ़ॉल्ट मान भरना तथा COALESCE और विक्रेता-विशिष्ट फ़ंक्शन के बीच अंतर समझें
COALESCE, NULLIF और ISNULL, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
NULL के स्थान पर मान रखना
अब जब आप NULL का पता लगा सकते हैं, अगला साक्षात्कार-कौशल है इसे किसी उचित डिफ़ॉल्ट मान से बदलना। इसके लिए सार्वत्रिक, मानक साधन COALESCE है।
इसके साथ आप NULLIF भी सीखेंगे, जो किसी विशिष्ट मान को NULL में बदलकर विपरीत दिशा में काम करता है। साथ ही, प्रदाता-विशिष्ट फ़ंक्शन ISNULL (SQL Server) और IFNULL (MySQL) भी देखेंगे, जिन्हें उम्मीदवार अक्सर COALESCE के साथ भ्रमित करते हैं।
इनमें, खासकर तर्कों की संख्या और लौटाए गए प्रकार के संदर्भ में, ठीक-ठीक अंतर जानना चयन-जाँच में अक्सर पूछा जाता है।
COALESCE की मूल बातें
COALESCE कितने भी तर्क ले सकता है और बाएँ से दाएँ जाँच करते हुए पहला गैर-NULL मान लौटाता है। यदि सभी तर्क NULL हों, तो यह NULL लौटाता है।
यह ANSI मानक है और हर प्रमुख डेटाबेस पर काम करता है, इसलिए यह आपका डिफ़ॉल्ट उत्तर होना चाहिए। इसका उपयोग प्रदर्शन, गणना या समूहबद्धता के लिए वैकल्पिक मान देने में करें।
-- Show 0 instead of NULL for missing bonuses
SELECT name, COALESCE(bonus, 0) AS bonus
FROM employees;
-- Multiple fallbacks, first non-NULL wins
SELECT COALESCE(mobile_phone, home_phone, 'no phone') AS contact
FROM customers;COALESCE का शीघ्र-समापन व्यवहार
साक्षात्कारकर्ता जिस सूक्ष्मता को परखते हैं, वह यह है: COALESCE अवधारणात्मक रूप से तर्कों का मूल्यांकन बाएँ से दाएँ करता है और पहले गैर-NULL मान पर रुक जाता है। इसलिए पहले वाला मान तय हो जाने के बाद बाद की महँगी अभिव्यक्ति की आवश्यकता नहीं रहती।
व्यवहार में कुछ डेटाबेस इंजन फिर भी तर्कों का पहले ही मूल्यांकन कर सकते हैं, इसलिए शून्य से भाग देने जैसी त्रुटियों से बचने के लिए इस पर निर्भर न रहें। हालाँकि, कौन-सा मान चुना जाएगा, इसका बाएँ से दाएँ क्रम वाला नियम निश्चित है।
-- Prefer the manual override, else the computed value,
-- else a constant default
SELECT COALESCE(manual_price, list_price * 1.1, 9.99) AS price
FROM products;COALESCE और परिणाम का डेटा प्रकार
एक सूक्ष्म समस्या यह है कि COALESCE के परिणाम का डेटा प्रकार केवल पहले तर्क से नहीं, बल्कि इसके सभी तर्कों की संयुक्त प्रकार-प्राथमिकता से तय होता है। असंगत प्रकारों को मिलाने पर त्रुटियाँ या अनपेक्षित रूप से मान छोटा हो जाना संभव है।
उदाहरण के लिए, किसी पूर्णांक कॉलम और स्ट्रिंग के पूर्वनिर्धारित मान पर COALESCE चलाने पर डेटाबेस इंजन के अनुसार प्रक्रिया विफल हो सकती है या मान का प्रकार अप्रत्यक्ष रूप से बदला जा सकता है। साक्षात्कारकर्ता इसका उपयोग यह जाँचने के लिए करते हैं कि आप प्रकारों के बारे में सोचते हैं या नहीं।
-- Risky: integer column with a string fallback
-- may error or force a cast depending on dialect
SELECT COALESCE(score, 'N/A') FROM tests;
-- Safer: keep the fallback type-compatible, or cast explicitly
SELECT COALESCE(CAST(score AS VARCHAR), 'N/A') FROM tests;ISNULL (SQL Server) बनाम COALESCE
SQL Server में ISNULL(expr, replacement) उपलब्ध है। यह COALESCE जैसा दिखता है, लेकिन इसमें कुछ महत्वपूर्ण अंतर हैं जिन्हें साक्षात्कारकर्ता अक्सर तुलना के लिए पूछते हैं:
- तर्कों की संख्या: ISNULL ठीक दो तर्क लेता है; COALESCE कई तर्क ले सकता है।
- लौटाया गया प्रकार: ISNULL पहले तर्क का प्रकार अपनाता है, जिससे replacement का मान छोटा हो सकता है। COALESCE संयुक्त प्रकार-प्राथमिकता का उपयोग करता है।
- सार्वत्रिक उपयोग: ISNULL केवल SQL Server में है; COALESCE ANSI मानक है।
मौखिक रूप से देने योग्य सुझाव: सार्वत्रिक उपयोग और अनुमानित प्रकार-व्यवहार के लिए COALESCE को प्राथमिकता दें।
-- SQL Server: ISNULL may truncate the replacement to
-- the first argument's type (e.g. CHAR(1))
SELECT ISNULL(code, 'UNKNOWN') FROM items;
-- If code is CHAR(1), 'UNKNOWN' becomes 'U'
-- COALESCE picks the wider type and keeps 'UNKNOWN'
SELECT COALESCE(code, 'UNKNOWN') FROM items;IFNULL और NVL
अन्य डेटाबेस रूपों में दो-तर्क वाले अपने संक्षिप्त रूप होते हैं:
- MySQL / SQLite:
IFNULL(expr, replacement) - Oracle:
NVL(expr, replacement), साथ ही तब/अन्यथा वाले विकल्प के लिएNVL2
ये सभी दो-तर्क वाले COALESCE की तरह काम करते हैं। यदि विशेष रूप से MySQL या Oracle की प्रचलित शैली पूछी जाए, तो इनका नाम लें; अन्यथा COALESCE चुनें।
-- MySQL
SELECT IFNULL(bonus, 0) FROM employees;
-- Oracle
SELECT NVL(bonus, 0) FROM employees;
-- NVL2(bonus, 'has bonus', 'no bonus') -> if/else on NULLNULLIF: विपरीत दिशा
NULLIF(a, b) तब NULL लौटाता है जब a = b हो; अन्यथा यह a लौटाता है। यह जानबूझकर NULL बनाता है, इसलिए COALESCE का उलटा है।
इसका सबसे प्रसिद्ध उपयोग शून्य से भाग देने से बचना है। हर को NULLIF(denominator, 0) में लपेटें: यदि हर शून्य है, तो भाजक NULL बन जाएगा और पूरी भाग की गणना त्रुटि उत्पन्न करने के बजाय NULL लौटाएगी।
-- Avoid divide-by-zero: returns NULL instead of erroring
SELECT revenue / NULLIF(orders, 0) AS avg_order_value
FROM daily_stats;
-- NULLIF(5, 5) -> NULL
-- NULLIF(5, 3) -> 5NULLIF और COALESCE को जोड़ना
ये दोनों एक-दूसरे के साथ बहुत अच्छे से काम करते हैं। साक्षात्कार में दिया जाने वाला एक प्रचलित एक-पंक्ति उदाहरण है: ‘जब कोई ऑर्डर न हो, तब 0 दिखाने वाला सुरक्षित भाग।’ त्रुटि से बचने के लिए NULLIF का उपयोग करें, फिर बने हुए NULL को बदलने के लिए COALESCE का।
यह संक्षिप्त शैली आपकी दक्षता दिखाती है: आप एक ही अभिव्यक्ति में सीमांत स्थिति और प्रस्तुति, दोनों संभालते हैं।
SELECT
COALESCE(revenue / NULLIF(orders, 0), 0) AS avg_order_value
FROM daily_stats;
-- orders = 0 -> NULLIF gives NULL -> division gives NULL
-- -> COALESCE turns it into 0रिक्त स्ट्रिंग को NULL मानना
NULLIF का एक और व्यावहारिक उपयोग है रिक्त स्ट्रिंग को NULL में बदलना, ताकि दोनों को एक समान तरीके से संभाला जा सके। अव्यवस्थित डेटा में अक्सर NULL और '' दोनों मिले होते हैं; यह प्रक्रिया दोनों को एकरूप करती है।
इस ढाँचे को ऐसे पढ़िए: ‘यदि मान रिक्त है, तो उसे NULL बना दें, फिर डिफ़ॉल्ट मान अपनाएँ।’ ‘रिक्त और अनुपस्थित मानों को एक जैसा कैसे मानेंगे?’—इस प्रश्न का यह साफ़ और सार्वत्रिक उत्तर है।
-- Treat both '' and NULL as missing, default to 'Anonymous'
SELECT COALESCE(NULLIF(TRIM(username), ''), 'Anonymous')
FROM users;गहन उदाहरण: JOIN में COALESCE का उपयोग
LEFT JOIN के बाद, जिन पंक्तियों का मिलान नहीं होता, उनकी दाईं ओर NULL मान बनते हैं। COALESCE इन मानों को परिणाम में अर्थपूर्ण डिफ़ॉल्ट मानों में बदल देता है; रिपोर्ट में यह बहुत सामान्य आवश्यकता है।
यहाँ बिना ऑर्डर वाले ग्राहक भी दिखाई देते हैं (LEFT JOIN के कारण), और उनका कुल NULL के बजाय 0 दिखता है। यह बताना कि COALESCE JOIN के बाद लागू होता है, JOIN के अंदर नहीं, यह दिखाता है कि आप मूल्यांकन क्रम समझते हैं।
SELECT
c.name,
COALESCE(SUM(o.amount), 0) AS total_spent
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
-- Customers with no orders get 0 instead of NULLसाक्षात्कार में कहने योग्य बातें
NULL के स्थान पर मान रखने वाले साधनों का सारांश:
- COALESCE(a, b, ...): पहला गैर-NULL मान, अनेक तर्क, ANSI मानक और प्रकार-प्राथमिकता के अनुसार प्रकार। यह डिफ़ॉल्ट विकल्प है।
- ISNULL / IFNULL / NVL: दो-तर्क वाले प्रदाता-विशिष्ट संक्षिप्त रूप; ISNULL पहले तर्क के प्रकार के अनुसार मान को छोटा कर सकता है।
- NULLIF(a, b): समान होने पर NULL लौटाता है; शून्य से भाग देने से बचने और रिक्त मानों को एकरूप करने के लिए उपयोगी है।
- सुरक्षित और प्रस्तुत करने योग्य भाग की गणना के लिए
COALESCE(x / NULLIF(y, 0), 0)को मिलाकर उपयोग करें।
पहले COALESCE का उल्लेख करें और डेटाबेस रूप निश्चित होने पर ही प्रदाता-विशिष्ट विकल्पों की बात करें।
त्वरित जाँच
सुरक्षित भाग की गणना वाली अभिव्यक्ति चुनिए।
पुनरावलोकन
अब आप NULL मान बना और बदल सकते हैं:
- COALESCE अनेक तर्कों में से पहला गैर-NULL मान लौटाता है; यह सार्वत्रिक डिफ़ॉल्ट विकल्प है।
- ISNULL (SQL Server), IFNULL (MySQL) और NVL (Oracle) दो-तर्क वाले संक्षिप्त रूप हैं; ISNULL पहले तर्क के प्रकार के अनुसार मान को छोटा कर सकता है।
- NULLIF(a, b) दोनों मान समान होने पर NULL लौटाता है; यह शून्य से भाग देने से बचने और रिक्त स्ट्रिंग को एकरूप करने के लिए आदर्श है।
- सुरक्षित, प्रस्तुत करने योग्य अभिव्यक्तियाँ बनाने और LEFT JOIN के बाद बने NULL मानों के लिए डिफ़ॉल्ट मान देने हेतु इन्हें मिलाकर उपयोग करें।
अंतिम पाठ: समुच्चय फ़ंक्शन, JOIN और DISTINCT में NULL का व्यवहार।
एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 90
- पाठ
- 360
अक्सर पूछे जाने वाले प्रश्न
क्या “COALESCE, NULLIF और ISNULL” पाठ निःशुल्क है?
हाँ—“COALESCE, NULLIF और ISNULL” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“COALESCE, NULLIF और ISNULL” में मैं क्या सीखूँगा?
डिफ़ॉल्ट मान भरना तथा COALESCE और विक्रेता-विशिष्ट फ़ंक्शन के बीच अंतर समझें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“COALESCE, NULLIF और ISNULL” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- तीन-मूल्यीय तर्क और UNKNOWN
- IS NULL, IS NOT NULL और NULL-सुरक्षित समानता
- COALESCE, NULLIF और ISNULL
- समेकन, JOIN और DISTINCT में NULL