SQL Academy · पाठ

IS NULL और IS NOT NULL

अनुपस्थित मानों की सही जाँच करें।

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

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

गायब मानों की जाँच

चूँकि NULL के साथ तुलना हमेशा अज्ञात लौटाती है, SQL आपको गायब मानों की जाँच के लिए दो विशेष ऑपरेटर देता है: IS NULL और IS NOT NULL।

NULL खोजने या हटाने का यही एकमात्र विश्वसनीय तरीका है। इस पाठ में आप इनका सही उपयोग करना सीखेंगे।

-- Rows where phone is missing
SELECT name FROM customers WHERE phone IS NULL;

-- Rows where phone is present
SELECT name FROM customers WHERE phone IS NOT NULL;

= NULL क्यों विफल होता है

WHERE phone = NULL लिखना स्वाभाविक लग सकता है, लेकिन यह कभी किसी पंक्ति से मेल नहीं खाता। हर पंक्ति के लिए इस शर्त का परिणाम unknown होता है, और WHERE केवल सही पंक्तियाँ रखता है।

परिणाम एक खाली समुच्चय होता है — यह एक छिपी हुई त्रुटि है, क्योंकि कोई त्रुटि उत्पन्न नहीं होती।

-- Always returns 0 rows, even if NULLs exist
SELECT * FROM customers WHERE phone = NULL;

-- The fix
SELECT * FROM customers WHERE phone IS NULL;

IS NULL का प्रयोग

IS NULL ठीक तभी true लौटाता है जब मान गायब हो, और अन्यथा false लौटाता है। यह कभी unknown नहीं लौटाता।

इसलिए जहाँ भी आपको साफ़ सही/गलत परिणाम चाहिए, वहाँ इसका सुरक्षित रूप से उपयोग किया जा सकता है।

SELECT id, name, (phone IS NULL) AS missing_phone
FROM customers;

-- id | name  | missing_phone
-- ---+-------+--------------
--  1 | Alice | f
--  2 | Bob   | t
--  3 | Carol | t

IS NOT NULL का प्रयोग

IS NOT NULL इसका ठीक उल्टा है: मान मौजूद होने पर true और गायब होने पर false लौटाता है।

इसका उपयोग उन पंक्तियों तक फ़िल्टर करने के लिए करें जिनमें वास्तव में डेटा है, जैसे वे ग्राहक जिन्हें आप फ़ोन कर सकते हैं।

SELECT name, phone
FROM customers
WHERE phone IS NOT NULL;

-- name  | phone
-- ------+----------
-- Alice | 555-0101

AND / OR के साथ संयोजन

आप AND और OR का उपयोग करके NULL की जाँचों को अन्य शर्तों के साथ जोड़ सकते हैं।

उदाहरण के लिए, ऐसे सक्रिय ग्राहकों को खोजें जिन्हें अब भी फ़ोन नंबर दर्ज करना है — यह डेटा गुणवत्ता की एक सामान्य जाँच है।

SELECT id, name
FROM customers
WHERE is_active = true
  AND phone IS NULL;

-- Active customers missing a phone number

NOT IN में NULL: एक जाल

जब सूची में NULL हो, तो NOT IN ठीक से काम नहीं करता। यदि समुच्चय में कोई भी मान NULL है, तो NOT IN हर पंक्ति के लिए unknown लौटा सकता है और आपके अपेक्षित परिणामों को हटा सकता है।

NOT EXISTS को प्राथमिकता दें या पहले उपप्रश्न से NULL मान हटा दें।

-- Risky: if blocked_ids contains a NULL, this returns nothing
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM blocked);

-- Safer
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM blocked WHERE user_id IS NOT NULL);

IS DISTINCT FROM

PostgreSQL IS DISTINCT FROM और IS NOT DISTINCT FROM उपलब्ध कराता है — ये NULL-सुरक्षित तुलना ऑपरेटर हैं।

= के विपरीत, ये दो NULL मानों को समान और NULL तथा किसी मान को अलग मानते हैं। इनका परिणाम हमेशा true या false होता है, कभी unknown नहीं।

SELECT
  NULL IS NOT DISTINCT FROM NULL AS a, -- true: both NULL = same
  NULL IS DISTINCT FROM 5        AS b, -- true: NULL differs from 5
  5 IS DISTINCT FROM 5          AS c; -- false: same value

दो NULL-स्वीकारी स्तंभों की तुलना

जब दोनों NULL हो सकने वाले दो स्तंभों की तुलना की जाती है, तो साधारण = उस स्थिति को छोड़ देता है जिसमें दोनों NULL हों। IS NOT DISTINCT FROM इसे सही ढंग से संभालता है।

यह उन पंक्तियों को खोजने के लिए उपयोगी है जिनमें कोई बदलाव नहीं हुआ है, भले ही मान अज्ञात हो।

-- Rows where old and new phone are 'the same',
-- counting NULL = NULL as same
SELECT id
FROM customer_changes
WHERE old_phone IS NOT DISTINCT FROM new_phone;

NULL की गिनती

IS NULL का एक व्यावहारिक उपयोग डेटा गुणवत्ता की जाँच है — यह गिनना कि कितनी पंक्तियों में कोई मान गायब है।

NULL और NULL-रहित मानों की साथ-साथ गिनती करने के लिए इसे FILTER (PostgreSQL) या COUNT के अंदर CASE के साथ मिलाएँ।

SELECT
  count(*) AS total,
  count(*) FILTER (WHERE phone IS NULL)     AS missing,
  count(*) FILTER (WHERE phone IS NOT NULL) AS present
FROM customers;

CHECK बाध्यताओं में NULL की जाँच

आप "यदि कोई पंक्ति भेज दी गई है, तो उसमें भेजने की तारीख होनी चाहिए" जैसे नियम लागू करने के लिए CHECK बाध्यताओं के अंदर NULL की जाँचों का उपयोग कर सकते हैं।

ध्यान दें: CHECK बाध्यता तब पास होती है जब उसकी शर्त true या unknown हो, इसलिए NULL वाली स्थितियों पर सावधानी से विचार करें।

CREATE TABLE orders (
  id        integer PRIMARY KEY,
  status    text NOT NULL,
  ship_date date,
  CHECK (status <> 'shipped' OR ship_date IS NOT NULL)
);

सर्वोत्तम अभ्यास

NULL के साथ सुरक्षित रहने के लिए ये आदतें अपनाएँ:

  • हमेशा IS NULL / IS NOT NULL से जाँच करें, कभी = NULL से नहीं।
  • NULL स्वीकार करने वाले उपप्रश्नों के साथ NOT IN से सावधान रहें।
  • NULL-सुरक्षित समानता के लिए IS DISTINCT FROM का उपयोग करें।
  • count(*) FILTER (...) से गायब डेटा की जाँच करें।
-- The reliable toolkit
WHERE col IS NULL
WHERE col IS NOT NULL
WHERE a IS DISTINCT FROM b
WHERE a IS NOT DISTINCT FROM b

त्वरित जाँच

आप उन सभी ग्राहकों को चाहते हैं जिनके phone कॉलम में कोई मान नहीं है। सही WHERE क्लॉज़ कौन-सा है?

पुनरावलोकन

आपने IS NULL और IS NOT NULL से अनुपस्थित मानों की जाँच करने का सही तरीका सीखा, और यह भी कि = NULL कभी काम क्यों नहीं करता।

आपने NOT IN वाली समस्या, NULL-सुरक्षित IS DISTINCT FROM ऑपरेटर, और FILTER से NULL की जाँच-पड़ताल करना भी सीखा। अब आप COALESCE और NULLIF का उपयोग करके NULL को उपयुक्त डिफ़ॉल्ट मानों से बदलना सीखेंगे।

SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;
शुरुआत निःशुल्क

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

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

पाठ्यक्रम
46
पाठ
183

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

क्या “IS NULL और IS NOT NULL” पाठ निःशुल्क है?

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

“IS NULL और IS NOT NULL” में मैं क्या सीखूँगा?

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

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

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

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

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

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

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

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

  1. NULL का वास्तविक अर्थ
  2. IS NULL और IS NOT NULL
  3. COALESCE और NULLIF
  4. एग्रीगेट और JOIN में NULL
← SQL Academy पर वापस जाएँ