SQL साक्षात्कार की तैयारी · पाठ

IS NULL, IS NOT NULL और NULL-सुरक्षित समानता

NULL की सही जाँच और अलग-अलग बोली के NULL-सुरक्षित ऑपरेटर सीखें

पाठ 2, कुल 4 में से13 चरण

IS NULL, IS NOT NULL और NULL-सुरक्षित समानता, CoddyKit पर SQL साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

NULL की सही तरह जाँच करना

पिछले पाठ ने सिद्ध किया कि NULL खोजने के लिए आप = का इस्तेमाल नहीं कर सकते। तो फिर इसकी जाँच कैसे करें? इसके लिए विशेष शर्तें IS NULL और IS NOT NULL इस्तेमाल करें।

गायब मानों की जाँच करने का यही एकमात्र सही और विभिन्न डेटाबेस में चलने योग्य तरीका है। इंटरव्यू लेने वाले जब भी col = NULL देखते हैं, उसे गलत मानते हैं।

इस पाठ में IS NULL, IS NOT NULL, IS DISTINCT FROM परिवार और डेटाबेस-भाषा-विशिष्ट NULL-सुरक्षित समानता संचालकों के बारे में बताया गया है। अलग-अलग डेटाबेसों के बीच के अंतर जानना वरिष्ठ स्तर की समझ का मजबूत संकेत है।

IS NULL और IS NOT NULL

IS NULL तब TRUE लौटाता है जब मान NULL हो, और अन्यथा FALSE लौटाता है। महत्वपूर्ण बात यह है कि इसका परिणाम कभी UNKNOWN नहीं होता, इसलिए इसे सीधे WHERE में सुरक्षित रूप से इस्तेमाल किया जा सकता है।

IS NOT NULL इसका ठीक पूरक है: किसी भी वास्तविक मान के लिए TRUE और NULL के लिए FALSE।

ये NULL को संभालने के मुख्य साधन हैं। ये मानक एसक्यूएल का हिस्सा हैं और MySQL, पोस्टग्रेज़, एसक्यूएल सर्वर, ओरेकल और एसक्यूलाइट में एक जैसे काम करते हैं।

-- Find employees with no recorded bonus
SELECT name FROM employees WHERE bonus IS NULL;

-- Find employees that do have a bonus
SELECT name FROM employees WHERE bonus IS NOT NULL;

कॉलम = NULL हमेशा गलत क्यों है

इंटरव्यू में पूछा जाने वाला एक पक्का जाल: उम्मीदवार WHERE bonus = NULL लिखता है और उम्मीद करता है कि इससे बिना बोनस वाले रिकॉर्ड मिल जाएँगे। यह शून्य पंक्तियाँ लौटाता है।

तीन-मूल्य तर्क याद रखें: NULL वाली पंक्तियों समेत हर पंक्ति के लिए bonus = NULL का परिणाम UNKNOWN होता है, क्योंकि कोई भी चीज़ अज्ञात के बराबर नहीं होती। WHERE केवल TRUE को रखता है, इसलिए कुछ भी मेल नहीं खाता।

कुछ डेटाबेस गैर-मानक मोड में = NULL को चुपचाप IS NULL में बदल देते हैं, लेकिन आपको कभी भी इस पर निर्भर नहीं रहना चाहिए। हमेशा IS NULL स्पष्ट रूप से लिखें।

-- WRONG: returns zero rows, bonus = NULL is UNKNOWN for all
SELECT name FROM employees WHERE bonus = NULL;

-- RIGHT:
SELECT name FROM employees WHERE bonus IS NULL;

NULL और NULL-रहित मानों की गिनती

विश्लेषकों का एक सामान्य काम डेटा-गुणवत्ता की जाँच करना है: कोई स्तंभ कितना पूर्ण है? गायब मानों की रिपोर्ट बनाने के लिए IS NULL को COUNT के साथ मिलाएँ।

इस अंतर पर ध्यान दें: COUNT(*) हर पंक्ति को गिनता है, जबकि COUNT(bonus) केवल NULL-रहित बोनस को गिनता है। दोनों के बीच का अंतर NULL की गिनती के बराबर होता है। हम समेकित गणनाओं वाले पाठ में इस तथ्य पर फिर लौटेंगे।

SELECT
  COUNT(*)                                AS total_rows,
  COUNT(bonus)                            AS with_bonus,
  COUNT(*) - COUNT(bonus)                 AS missing_bonus,
  SUM(CASE WHEN bonus IS NULL THEN 1 ELSE 0 END) AS missing_check
FROM employees;

NULL-सुरक्षित समानता किस समस्या को हल करती है

मान लीजिए कि आप दो स्तंभों का मिलान करना चाहते हैं और दोनों NULL होने को भी मेल मानना चाहते हैं। साधारण a = b ऐसा नहीं कर पाता: दोनों NULL होने पर परिणाम UNKNOWN होता है, इसलिए वह जोड़ी बाहर हो जाती है, भले ही सहज रूप से वे 'एक जैसे' लगते हों।

ऐसा बदलाव पहचानने के लिए पुरानी पंक्ति की नई पंक्ति से तुलना करते समय या वैकल्पिक स्तंभों पर जोड़ बनाते समय सामने आता है। आपको ऐसी तुलना चाहिए जिसमें NULL का NULL के बराबर होना TRUE हो और NULL बनाम किसी मान का परिणाम FALSE हो। यही सुविधा NULL-सुरक्षित समानता देती है।

-- Goal: change-detection where two NULLs count as equal
-- Plain equality fails when both sides are NULL:
--   NULL = NULL -> UNKNOWN (treated as not-equal)
SELECT * FROM old_t o JOIN new_t n ON o.id = n.id
WHERE o.note = n.note;  -- misses rows where both notes are NULL

IS DISTINCT FROM (मानक एसक्यूएल)

ANSI-मानक NULL-सुरक्षित तुलना IS DISTINCT FROM और इसका उलटा IS NOT DISTINCT FROM है। इन्हें पोस्टग्रेज़, एसक्यूएल सर्वर (2022+) और अन्य डेटाबेस में समर्थन प्राप्त है।

  • a IS NOT DISTINCT FROM b का अर्थ है 'समान, जहाँ NULL = NULL को भी समान माना जाता है।'
  • a IS DISTINCT FROM b का अर्थ है 'अलग, जहाँ NULL को सामान्य मान की तरह माना जाता है।'

इनका परिणाम हमेशा TRUE या FALSE होता है, कभी UNKNOWN नहीं, इसलिए जहाँ भी किसी शर्त की अपेक्षा हो वहाँ इनका इस्तेमाल सुरक्षित है।

-- TRUE when notes match, including both NULL
SELECT * FROM old_t o JOIN new_t n ON o.id = n.id
WHERE o.note IS NOT DISTINCT FROM n.note;

-- TRUE when notes differ (NULL vs value counts as different)
SELECT * FROM old_t o JOIN new_t n ON o.id = n.id
WHERE o.note IS DISTINCT FROM n.note;

MySQL का <=> संचालक

MySQL एक संक्षिप्त NULL-सुरक्षित समानता संचालक उपलब्ध कराता है, जिसे <=> लिखा जाता है (स्पेसशिप संचालक)।

a <=> b तब 1 (TRUE) लौटाता है जब दोनों पक्ष बराबर हों या दोनों NULL हों, और अन्यथा 0 (FALSE) लौटाता है। यह IS NOT DISTINCT FROM के बराबर MySQL वाला तरीका है।

यदि इंटरव्यू लेने वाला विशेष रूप से MySQL में NULL-सुरक्षित मिलान के बारे में पूछे, तो यही प्रचलित उत्तर है।

-- MySQL: 1 when both equal or both NULL
SELECT (NULL <=> NULL) AS both_null,   -- 1
       (NULL <=> 5)    AS null_vs_val, -- 0
       (5 <=> 5)       AS val_eq;      -- 1

SELECT * FROM old_t o JOIN new_t n ON o.id = n.id
WHERE o.note <=> n.note;

विभिन्न SQL रूपों की त्वरित संदर्शिका

साक्षात्कारकर्ता उन उम्मीदवारों का सम्मान करते हैं जो अलग-अलग डेटाबेस में चलने की सीमाएँ जानते हैं। NULL-सुरक्षित समानता का मानचित्र यह है:

  • ANSI / Postgres / SQL Server 2022+: IS NOT DISTINCT FROM
  • MySQL / MariaDB: <=>
  • SQLite: IS और IS NOT NULL-सुरक्षित समानता की तरह काम करते हैं
  • Oracle: कोई मूल ऑपरेटर नहीं है; DECODE(a, b, 1, 0) = 1 या COALESCE की युक्तियों से इसका अनुकरण करें

डेटाबेस इंजन के बारे में निश्चित न हों, तो आगे दिखाए गए सार्वत्रिक मैनुअल रूप को विकल्प के रूप में अपनाइए।

-- SQLite NULL-safe equality
SELECT * FROM t WHERE a IS b;      -- TRUE when both NULL
SELECT * FROM t WHERE a IS NOT b;  -- complement

सार्वत्रिक मैनुअल NULL-सुरक्षित मिलान

जब कोई मूल ऑपरेटर उपलब्ध न हो, तब आप मूल घटकों से NULL-सुरक्षित समानता बना सकते हैं। यह सार्वत्रिक ढाँचा सामान्य समानता को दोनों मानों के NULL होने वाली स्पष्ट शर्त के साथ जोड़ता है।

इसे इस तरह पढ़िए: ‘वे समान हैं, या दोनों अनुपस्थित हैं।’ यह हर डेटाबेस पर काम करता है, इसलिए जब साक्षात्कारकर्ता डेटाबेस रूप स्पष्ट न करे, तब यह एक अच्छा उत्तर है।

SELECT *
FROM old_t o JOIN new_t n ON o.id = n.id
WHERE (o.note = n.note)
   OR (o.note IS NULL AND n.note IS NULL);

-- Alternative using COALESCE with a sentinel that
-- cannot occur in real data:
-- WHERE COALESCE(o.note, '##NULL##') = COALESCE(n.note, '##NULL##')

गहन उदाहरण: NULL-सुरक्षित JOIN कुंजियाँ

एक वास्तविक उलझन nullable कुंजी पर JOIN करना है। यदि दोनों ओर region NULL हो सकता है, तो सामान्य equi-join उन जोड़ों को चुपचाप हटा देता है, क्योंकि NULL = NULL का परिणाम UNKNOWN होता है।

यदि व्यावसायिक नियम यह है कि ‘जिन पंक्तियों में region नहीं है, उनका मिलान अन्य ऐसी ही पंक्तियों से फिर भी होना चाहिए’, तो आपको JOIN की शर्त को NULL-सुरक्षित बनाना होगा। साक्षात्कार में यह मान्यता स्पष्ट रूप से बताइए, फिर डेटाबेस इंजन के अनुसार उपयुक्त ऑपरेटर चुनिए।

-- Postgres / ANSI: match including both-NULL regions
SELECT a.id, b.id
FROM table_a a
JOIN table_b b
  ON a.region IS NOT DISTINCT FROM b.region;

-- MySQL equivalent: ON a.region <=> b.region

साक्षात्कार में कहने योग्य बातें

NULL की किसी भी जाँच से जुड़े प्रश्न को साफ़-साफ़ संभालने के लिए:

  • हमेशा IS NULL / IS NOT NULL का उपयोग करें; कभी भी = NULL का नहीं।
  • ये शर्तें केवल TRUE या FALSE लौटाती हैं, इसलिए WHERE में सुरक्षित हैं।
  • ‘NULL के बराबर NULL’ मिलान के लिए IS NOT DISTINCT FROM (ANSI) या <=> (MySQL) का उपयोग करें।
  • बताइए कि आप किस डेटाबेस रूप को लक्ष्य बना रहे हैं; निश्चित न होने पर सार्वत्रिक OR-शर्त वाला विकल्प प्रस्तुत करें।

मानक और प्रदाता-विशिष्ट, दोनों ऑपरेटरों का नाम लेना ऐसी व्यापक समझ दिखाता है जिस पर चयनकर्ता ध्यान देते हैं।

त्वरित जाँच

सही NULL-सुरक्षित तुलना चुनिए।

पुनरावलोकन

अब आप NULL की सही जाँच कर सकते हैं:

  • IS NULL / IS NOT NULL ही सही और सार्वत्रिक NULL जाँच हैं; वे कभी UNKNOWN नहीं लौटाते।
  • col = NULL हमेशा शून्य पंक्तियाँ लौटाता है; यह साक्षात्कार में पूछा जाने वाला एक सामान्य जाल है।
  • NULL-सुरक्षित समानता दो NULL मानों को समान मानती है: IS NOT DISTINCT FROM (ANSI/Postgres), <=> (MySQL), IS (SQLite)।
  • जब कोई ऑपरेटर उपलब्ध न हो, तो (a = b) OR (a IS NULL AND b IS NULL) का उपयोग करें।

अगला विषय: COALESCE, NULLIF और ISNULL जैसे प्रदाता-विशिष्ट फ़ंक्शन से NULL के स्थान पर डिफ़ॉल्ट मान रखना।

शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “IS NULL, IS NOT NULL और NULL-सुरक्षित समानता” पाठ निःशुल्क है?

हाँ—“IS NULL, IS NOT NULL और NULL-सुरक्षित समानता” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“IS NULL, IS NOT NULL और NULL-सुरक्षित समानता” में मैं क्या सीखूँगा?

NULL की सही जाँच और अलग-अलग बोली के NULL-सुरक्षित ऑपरेटर सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“IS NULL, IS NOT NULL और NULL-सुरक्षित समानता” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. तीन-मूल्यीय तर्क और UNKNOWN
  2. IS NULL, IS NOT NULL और NULL-सुरक्षित समानता
  3. COALESCE, NULLIF और ISNULL
  4. समेकन, JOIN और DISTINCT में NULL
← SQL साक्षात्कार की तैयारी पर वापस जाएँ