MySQL IFNULL फ़ंक्शन गाइड: NULL मानों को बदलें (Oracle NVL विकल्प)

目次

1. परिचय

डेटाबेस के साथ काम करते समय, NULL मानों को संभालना एक महत्वपूर्ण बिंदु है।
विशेष रूप से, Oracle के NVL फंक्शन के आदी लोगों के लिए MySQL में माइग्रेट करते समय NVL उपलब्ध न होने का एहसास होना असामान्य नहीं है

MySQL में, आप NVL के स्थान पर IFNULL फंक्शन का उपयोग करके NULL मानों को ठीक से संभाल सकते हैं।
यह लेख MySQL में NULL मानों के साथ काम करने का तरीका विस्तार से समझाता है, जिसमें IFNULL का उपयोग कैसे करें और यह अन्य NULL-संभालने वाले फंक्शनों से कैसे भिन्न है।

1.1 NULL मान क्या है?

डेटाबेस में, NULL का अर्थ है “कोई मान सेट नहीं किया गया है।”
क्योंकि यह “0” या “खाली स्ट्रिंग” से भिन्न है, इसे ठीक से संभालने में विफलता अप्रत्याशित त्रुटियों या गलत क्वेरी परिणामों का कारण बन सकती है।

उदाहरण के लिए, मान लीजिए आपके पास निम्नलिखित डेटा है।

IDNameAge
1Yamada25
2SatoNULL
3Suzuki30

ऊपर के डेटा में, ID “2” (सато) के लिए आयु NULL है।
यदि आप गणनाओं को जैसा है वैसा चलाते हैं, तो आपको त्रुटियां या अनपेक्षित परिणाम मिल सकते हैं।

1.2 MySQL NULL मानों को कैसे संभालता है

2. IFNULL फंक्शन क्या है?

MySQL IFNULL फंक्शन को NULL मानों को किसी अन्य मान से बदलने के लिए एक फंक्शन के रूप में प्रदान करता है।
यह Oracle के NVL फंक्शन के समान भूमिका निभाता है।

NULL मानों को उचित रूप से संभालकर, आप डेटा की कमी से उत्पन्न गणना समस्याओं को रोक सकते हैं और अधिक स्थिर SQL क्वेरी बना सकते हैं।
IFNULL के बुनियादी उपयोग को करीब से देखते हैं।

2.1 IFNULL का बुनियादी सिंटैक्स

IFNULL फंक्शन का बुनियादी सिंटैक्स निम्नलिखित है।

IFNULL(expression, fallback_value)
  • expression : NULL के लिए जांचा जाने वाला कॉलम या मान
  • fallback_value : जब expression NULL हो तो लौटाया जाने वाला मान (यदि NULL न हो, तो expression को जैसा है वैसा लौटाया जाता है)

उदाहरण के लिए, निम्नलिखित SQL स्टेटमेंट पर विचार करें।

SELECT IFNULL(NULL, 'Fallback value');

इस मामले में, क्योंकि NULL निर्दिष्ट है, परिणाम 'Fallback value' हो जाता है।

Result
Fallback value

दूसरी ओर, यदि आप एक गैर-NULL मान निर्दिष्ट करते हैं, तो वह मान जैसा है वैसा लौटाया जाता है।

SELECT IFNULL('Hello', 'Fallback value');
Result
Hello

2.2 IFNULL की मुख्य विशेषताएं

IFNULL फंक्शन की निम्नलिखित विशेषताएं हैं।

  1. यह NULL मानों को एक विशिष्ट मान में बदल सकता है
  • आप NULL वाले कॉलम के लिए एक वैकल्पिक डिफ़ॉल्ट मान सेट कर सकते हैं।
  1. यह एक सरल सिंटैक्स का उपयोग करता है
  • CASE एक्सप्रेशन का उपयोग करने से यह लिखना सरल है।
  1. आपको डेटा प्रकारों पर विचार करना चाहिए
  • IFNULL के तर्कों का एक ही डेटा प्रकार होना अनुशंसित है

उदाहरण के लिए, निम्नलिखित SQL त्रुटि का कारण बन सकता है।

SELECT IFNULL(100, 'Error');

कारण: एक संख्यात्मक प्रकार (100) और एक स्ट्रिंग प्रकार (‘Error’) मिश्रित हैं।
इस मामले में, fallback मान भी संख्यात्मक होना चाहिए।

SELECT IFNULL(100, 0);

2.3 IFNULL का उपयोग कब करना चाहिए

यहां कुछ व्यावहारिक स्थितियां हैं जहां IFNULL उपयोगी है।

  1. NULL के लिए डिफ़ॉल्ट मान सेट करें
  • उदाहरण के लिए, यदि किसी कर्मचारी का बोनस NULL है, तो इसे 0 सेट करें।
    SELECT name, IFNULL(bonus, 0) AS bonus
    FROM employees;
    
  1. NULL को शामिल करके गणनाओं से बचें
  • यदि आप NULL के साथ गणना करते हैं, तो परिणाम भी NULL हो जाता है।
  • NULL से बचने के लिए IFNULL का उपयोग करके इच्छित गणना सक्षम हो जाती है।
    SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
    FROM employees;
    
  1. रिपोर्ट्स और एग्रीगेशनों में NULL को ठीक से संभालें
  • यदि विश्लेषण के दौरान NULL मौजूद हो, तो गलत रिपोर्ट्स उत्पन्न हो सकती हैं।
  • IFNULL का उपयोग करके NULL को एक विशिष्ट मान से बदलकर, आप डेटा को सुसंगत रूप से प्रोसेस कर सकते हैं।

3. IFNULL फंक्शन के व्यावहारिक उदाहरण

पिछले अनुभाग में, हमने IFNULL फंक्शन के बुनियादी सिद्धांत समझाए।
इस अनुभाग में, हम वास्तविक डेटा के साथ इसका उपयोग करने के ठोस उदाहरण पेश करेंगे।

3.1 NULL मानों को डिफ़ॉल्ट मान से बदलें

यदि एक टेबल में NULL मान होते हैं, तो यह अनपेक्षित व्यवहार का कारण बन सकता है।
इसे हल करने के लिए, आप IFNULL का उपयोग करके NULL को डिफ़ॉल्ट मान से बदल सकते हैं।

उदाहरण: यदि किसी कर्मचारी का बोनस NULL है, तो डिफ़ॉल्ट मान 0 सेट करें

SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;

कार्यान्वयन से पहले डेटा

namebonus
Sato5000
SuzukiNULL
Takahashi8000

IFNULL लागू करने के बाद

namebonus
Sato5000
Suzuki0
Takahashi8000

NULL को 0 से बदलने से एग्रीगेशन और संबंधित प्रोसेसिंग सुगम हो जाता है।

3.2 NULL शामिल करने वाली गणनाओं से बचें

MySQL में, NULL शामिल करने वाली गणना का परिणाम NULL हो जाता है।
इसलिए, NULL से बचने के लिए आपको IFNULL का उपयोग करना चाहिए।

उदाहरण: वेतन और बोनस का कुल गणना करें

SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
FROM employees;

कार्यान्वयन से पहले डेटा

namesalarybonus
Sato3000005000
Suzuki280000NULL
Takahashi3200008000

IFNULL लागू करने के बाद

namesalarybonustotal_income
Sato3000005000305000
Suzuki2800000280000
Takahashi3200008000328000

यदि बोनस NULL है, तो कुल (salary + bonus) भी NULL हो जाता है,
लेकिन IFNULL लागू करने से MySQL NULL को 0 मानता है और सही ढंग से गणना करता है।

3.3 NULL को किसी अन्य स्ट्रिंग से बदलें

आप डिफ़ॉल्ट स्ट्रिंग न केवल संख्याओं के लिए, बल्कि जब मान NULL हो, तब भी सेट कर सकते हैं।

उदाहरण: उन उपयोगकर्ताओं के लिए “Not registered” दिखाएँ जिनके पास ईमेल पता नहीं है

SELECT id, name, IFNULL(email, 'Not registered') AS email
FROM users;

कार्यान्वयन से पहले डेटा

idnameemail
1Satosatou@example.com
2SuzukiNULL
3Takahashitakahashi@example.com

IFNULL लागू करने के बाद

idnameemail
1Satosatou@example.com
2SuzukiNot registered
3Takahashitakahashi@example.com

यदि इसे NULL ही रहने दिया जाए, तो फ़ील्ड खाली दिखता है, लेकिन IFNULL इसे “Not registered” के साथ स्पष्ट बनाता है।

3.4 WHERE क्लॉज़ में IFNULL का उपयोग करें

WHERE क्लॉज़ में IFNULL का उपयोग करके आप उन शर्तों के आधार पर फ़िल्टर कर सकते हैं जिनमें NULL मान शामिल हैं।

उदाहरण: केवल NULL मान वाले उपयोगकर्ताओं को प्राप्त करें

SELECT *
FROM users
WHERE IFNULL(email, '') = '';

यह SQL email को NULL होने पर '' (एक खाली स्ट्रिंग) मानता है, और केवल उन उपयोगकर्ताओं को प्राप्त करता है जिनका ईमेल NULL है।

3.5 ORDER BY में NULL मानों को अंत में रखें

आमतौर पर, जब आप ORDER BY का उपयोग करते हैं, तो NULL मान पहले दिखाई दे सकते हैं, लेकिन आप IFNULL का उपयोग करके उन्हें अंत में ले जा सकते हैं।

उदाहरण: NULL मान वाली पंक्तियों को अंत में रखें

SELECT name, salary
FROM employees
ORDER BY IFNULL(salary, 0) ASC;

4. IFNULL और COALESCE के बीच अंतर

MySQL NULL मानों को संभालने के लिए कई फ़ंक्शन प्रदान करता है, और IFNULL और COALESCE की अक्सर तुलना की जाती है।
दोनों NULL मानों को वैकल्पिक मानों से बदलते हैं, लेकिन उनका उपयोग और व्यवहार अलग है।

इस अनुभाग में, हम IFNULL और COALESCE के बीच अंतर और सही विकल्प कैसे चुनें को समझाते हैं।

4.1 COALESCE फ़ंक्शन क्या है?

COALESCE फ़ंक्शन कई तर्कों में से पहला गैर-NULL मान लौटाता है।
दूसरे शब्दों में, जबकि IFNULL दो मानों में से गैर-NULL मान चुनता है,
COALESCE कई उम्मीदवारों में से पहला गैर-NULL मान चुनकर अलग होता है।

सिंटैक्स

COALESCE(expr1, expr2, ... , exprN)
  • बाएँ से दाएँ मूल्यांकन करता है और पहला गैर-NULL मान लौटाता है
  • यदि सभी तर्क NULL हैं तो NULL लौटाता है

उदाहरण: COALESCE का उपयोग करके NULL को बदलना

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

इस मामले में, मान निम्नलिखित रूप से निर्धारित होते हैं।

  1. यदि phone NULL नहीं है, तो phone लौटाएँ।
  2. यदि phone NULL है और email NULL नहीं है, तो email लौटाएँ।
  3. यदि दोनों phone और email NULL हैं, तो 'Not registered' लौटाएँ।

4.2 IFNULL और COALESCE के बीच अंतर

Comparison itemIFNULLCOALESCE
NULL handlingReturns the fallback value if one expression is NULLEvaluates multiple expressions and returns the first non-NULL value
Number of argumentsOnly 22 or more (multiple allowed)
Use caseSimple NULL replacementNULL handling with priority order
Execution speedFast (compares only 2 values)Slightly slower (evaluates multiple values in order)

4.3 IFNULL और COALESCE के व्यावहारिक उदाहरण

उदाहरण 1: सरल NULL प्रतिस्थापन

IFNULL के साथ, आप दो मानों में से गैर-NULL मान चुन सकते हैं।

SELECT name, IFNULL(phone, 'Not registered') AS contact_info
FROM customers;

परिणाम

namephonecontact_info
Sato080-1234-5678080-1234-5678
SuzukiNULLNot registered

उदाहरण 2: पहला उपलब्ध गैर-NULL मान चुनें

COALESCE के साथ, आप पहला गैर-NULL मान प्राप्त कर सकते हैं।

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

परिणाम

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered
  • यदि phone NULL नहीं है, तो phone लौटाएँ
  • यदि phone NULL है और email NULL नहीं है, तो email लौटाएँ
  • यदि phone और email दोनों NULL हैं, तो‘Not registered’` लौटाएँ

4.4 IFNULL और COALESCE के बीच कैसे चुनें

✔ जब आपको IFNULL का उपयोग करना चाहिए

जब आप NULL को डिफ़ॉल्ट मान से सरलता से बदलना चाहते हैं
जब दो तर्क पर्याप्त हों (उदाहरण के लिए, NULL को 0 में बदलें)

✔ जब आपको COALESCE का उपयोग करना चाहिए

जब आप पहला गैर-NULL मान खोजना चाहते हैं (उदाहरण: phone → email → “Not registered”)
जब आपको तीन या अधिक मानों का मूल्यांकन करना हो

4.5 IFNULL और COALESCE के बीच प्रदर्शन तुलना

सामान्यतः, IFNULL COALESCE से तेज़ है
यह इसलिए है क्योंकि IFNULL केवल दो मानों का मूल्यांकन करता है, जबकि COALESCE क्रम में कई मानों का मूल्यांकन करता है।

प्रदर्शन परीक्षण

जब IFNULL और COALESCE को 1 मिलियन पंक्तियों पर लागू किया जाता है, तो आप नीचे दिखाए गए परिणाम देख सकते हैं.

FunctionExecution time (seconds)
IFNULL0.02
COALESCE0.05

बड़े डेटा वॉल्यूम के साथ, IFNULL थोड़ा तेज़ हो सकता है
➡ हालांकि, यदि आपको केवल एक फॉलबैक चाहिए, तो IFNULL उपयोग करें; यदि आप कई विकल्प चाहते हैं, तो COALESCE उपयोग करें.

5. MySQL के अलावा डेटाबेस में NULL-हैंडलिंग फ़ंक्शन

MySQL NULL मानों को संभालने के लिए IFNULL फ़ंक्शन प्रदान करता है, लेकिन अन्य डेटाबेस प्रबंधन प्रणाली (DBMS) अलग फ़ंक्शन उपयोग करती हैं।
Oracle, PostgreSQL, और SQL Server जैसे प्रमुख डेटाबेस में, MySQL से अलग फ़ंक्शन का उपयोग सामान्य है.

यह अनुभाग MySQL के अलावा डेटाबेस में NULL मानों को कैसे संभाला जाता है समझाता है.

5.1 Oracle में NULL हैंडलिंग: NVL फ़ंक्शन

Oracle में, NVL फ़ंक्शन MySQL के IFNULL के समकक्ष के रूप में प्रदान किया जाता है।
NVL फ़ंक्शन निर्दिष्ट मान के NULL होने पर एक अन्य मान लौटाता है.

सिंटैक्स

NVL(expression, fallback_value)
  • expression : वह कॉलम या मान जिसे NULL के लिए जाँचा जाता है
  • fallback_value : NULL होने पर लौटाया जाने वाला मान (यदि NULL नहीं है, तो अभिव्यक्ति जैसा है वैसा ही लौटती है)

उदाहरण

SELECT name, NVL(salary, 0) AS salary
FROM employees;

परिणाम

namesalary
Sato5000
Suzuki0
Takahashi8000

NVL का व्यवहार MySQL के IFNULL के लगभग समान है, इसलिए Oracle में आप सरलता से NVL का उपयोग कर सकते हैं.

5.2 PostgreSQL और SQL Server में NULL हैंडलिंग: COALESCE फ़ंक्शन

PostgreSQL और SQL Server में, COALESCE फ़ंक्शन NULL मानों को विकल्पों से बदलने के लिए उपयोग किया जाता है।
यह फ़ंक्शन कई उम्मीदवारों में से पहला गैर-NULL मान लौट सकता है.

सिंटैक्स

COALESCE(expr1, expr2, ..., exprN)
  • बाएँ से दाएँ मूल्यांकन करता है और पहला गैर-NULL मान लौटाता है
  • यदि सभी तर्क NULL हैं तो NULL लौटाता है

उदाहरण

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

परिणाम

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered

जैसा कि ऊपर दिखाया गया है, PostgreSQL और SQL Server में COALESCE का उपयोग MySQL के IFNULL की तुलना में अधिक लचीला NULL हैंडलिंग प्रदान करता है.

5.3 विभिन्न डेटाबेस में NULL-हैंडलिंग फ़ंक्शनों की तुलना

DatabaseNULL-handling functionRole
MySQLIFNULL(expression, fallback_value)Convert NULL to a fallback value
OracleNVL(expression, fallback_value)Convert NULL to a fallback value (equivalent to IFNULL)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)Return the first non-NULL value
  • सरल NULL हैंडलिंगIFNULL (MySQL) या NVL (Oracle)
  • कई उम्मीदवारों में से सर्वोत्तम मान चुननाCOALESCE (PostgreSQL, SQL Server)

5.4 विभिन्न DBMS के बीच माइग्रेशन के समय नोट्स

विभिन्न डेटाबेस के बीच सिस्टम माइग्रेट करते समय, NULL-हैंडलिंग फ़ंक्शनों में अंतर पर ध्यान देना आवश्यक है
विशेष रूप से, Oracle से MySQL में माइग्रेट करते समय, आपको NVL को IFNULL में बदलना होगा.

माइग्रेशन के दौरान पुनर्लेखन उदाहरण

  • Oracle (NVL)
    SELECT NVL(salary, 0) AS salary FROM employees;
    
  • MySQL (IFNULL)
    SELECT IFNULL(salary, 0) AS salary FROM employees;
    
  • PostgreSQL / SQL Server (COALESCE)
    SELECT COALESCE(salary, 0) AS salary FROM employees;
    

Also, because COALESCE can accept multiple arguments, it is more flexible than Oracle’s NVL or MySQL’s IFNULL.
During migration, it’s important to choose the correct function for the target database.

6. अक्सर पूछे जाने वाले प्रश्न (FAQ)

MySQL के IFNULL फ़ंक्शन और NULL हैंडलिंग के बारे में प्रश्न डेवलपर्स और डेटाबेस प्रशासकों के लिए महत्वपूर्ण हैं।
यह अनुभाग IFNULL के सामान्य प्रश्नों का सारांश प्रस्तुत करता है।

Q1. क्या IFNULL फ़ंक्शन और NVL फ़ंक्शन समान हैं?

वे लगभग समान कार्यक्षमता प्रदान करते हैं, लेकिन फ़ंक्शन का नाम डेटाबेस के अनुसार अलग होता है।

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)

MySQL में, IFNULL का उपयोग करें; Oracle में, NVL का उपयोग करके NULL मानों को एक फॉलबैक मान में बदलें।

Q2. IFNULL और COALESCE में क्या अंतर है?

IFNULL दो तर्कों में से गैर-NULL मान लौटाता है, जबकि
COALESCE कई तर्कों में से पहला गैर-NULL मान लौटाता है

FunctionFeature
IFNULL(a, b)If a is NULL, return b (only two arguments)
COALESCE(a, b, c, ...)Evaluates left to right and returns the first non-NULL value

उदाहरण

SELECT IFNULL(NULL, 'Fallback value'); -- Result: 'Fallback value'
SELECT COALESCE(NULL, NULL, 'First non-NULL value'); -- Result: 'First non-NULL value'

✔ जब आपको IFNULL का उपयोग करना चाहिए
✅ NULL होने पर एक विशिष्ट डिफ़ॉल्ट मान लौटाएँ (उदा., यदि NULL तो 0)
✅ जब आप केवल दो मान की तुलना कर रहे हों

✔ जब आपको COALESCE का उपयोग करना चाहिए
✅ पहला गैर-NULL मान प्राप्त करें (उदा., फोन → ईमेल → डिफ़ॉल्ट मान)
✅ जब आपको तीन या अधिक मान का मूल्यांकन करना हो

Q3. क्या IFNULL को संख्याओं के अलावा अन्य डेटा प्रकारों के साथ उपयोग किया जा सकता है?

हाँ। IFNULL को स्ट्रिंग्स, डेट्स, संख्याओं और अन्य के साथ उपयोग किया जा सकता है।

उदाहरण 1: स्ट्रिंग्स का उपयोग

SELECT name, IFNULL(email, 'Not registered') AS email
FROM users;

उदाहरण 2: डेट्स का उपयोग

SELECT name, IFNULL(last_login, '2000-01-01') AS last_login
FROM users;

हालांकि, विभिन्न डेटा प्रकारों (जैसे संख्याएँ और स्ट्रिंग्स) को मिलाने से त्रुटियाँ हो सकती हैं, इसलिए सावधान रहें।

SELECT IFNULL(100, 'Error'); -- May cause an error due to different data types

Q4. क्या IFNULL का उपयोग करने से प्रदर्शन घटता है?

सामान्यतः, प्रदर्शन पर प्रभाव न्यूनतम होता है, लेकिन बड़े डेटा वॉल्यूम को प्रोसेस करते समय यह महत्वपूर्ण हो सकता है।

  • IFNULL आमतौर पर तेज़ होता है क्योंकि यह केवल दो मानों की जाँच करता है
  • हालांकि, बहुत बड़े डेटासेट (मिलियन पंक्तियों) पर IFNULL का भारी उपयोग कुछ मामलों में इंडेक्स अनुकूलन को प्रभावित कर सकता है

🔹 प्रदर्शन अनुकूलन टिप्स

  1. इंडेक्स को उचित रूप से सेट करें
  • IFNULL(column, 0) = 100 जैसी क्वेरी कुछ मामलों में इंडेक्स के उपयोग को रोक सकती है
  • एक तरीका यह है कि शुरू से ही NULL के बजाय उपयुक्त डिफ़ॉल्ट मान के साथ मान संग्रहीत किए जाएँ
  1. IFNULL COALESCE से हल्का है
  • क्योंकि COALESCE क्रम में कई मानों का मूल्यांकन करता है, IFNULL कई मामलों में तेज़ हो सकता है

Q5. क्या आप IFNULL के बजाय CASE का उपयोग कर सकते हैं?

हाँ। आप CASE के साथ समान व्यवहार प्राप्त कर सकते हैं, लेकिन यह अधिक शब्दबद्ध हो जाता है।

IFNULL के साथ

SELECT name, IFNULL(salary, 0) AS salary
FROM employees;

CASE के साथ

SELECT name,
  CASE WHEN salary IS NULL THEN 0 ELSE salary END AS salary
FROM employees;

IFNULL संक्षिप्त और उपयोग में आसान है
CASE अधिक लचीली शर्तों का समर्थन करता है (उदा., आप गैर-NULL शर्तें भी शामिल कर सकते हैं)

Q6. क्या IFNULL को WHERE क्लॉज़ में उपयोग किया जा सकता है?

हाँ। IFNULL को WHERE क्लॉज़ के भीतर उपयोग किया जा सकता है।

उदाहरण: खोजते समय NULL को एक विशिष्ट मान से बदलें

SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';

यह उन रिकॉर्ड्स को प्राप्त करता है जहाँ status NULL है।

सारांश

  • IFNULL और NVL लगभग समान कार्यक्षमता रखते हैं, लेकिन DBMS के अनुसार अलग होते हैं
  • IFNULL 2 मानों का मूल्यांकन करता है; COALESCE कई मानों का
  • स्ट्रिंग्स, डेट्स, संख्याओं और अन्य के साथ काम करता है
  • बड़े डेटासेट के लिए, इंडेक्स अनुकूलन पर विचार करें
  • आप IFNULL के बजाय CASE का उपयोग कर सकते हैं
  • IFNULL को WHERE क्लॉज़ में भी उपयोग किया जा सकता है

7. निष्कर्ष

इस लेख में, हमने MySQL के IFNULL फ़ंक्शन को विस्तार से कवर किया है, जिसमें NULL मानों को कैसे संभालें, यह अन्य फ़ंक्शनों से कैसे अलग है, और व्यावहारिक उदाहरण शामिल हैं।
अंत में, चलिए संक्षेप में देखें कि हमने क्या-क्या कवर किया।

7.1 IFNULL फ़ंक्शन क्या है?

  • IFNULL निर्दिष्ट मान NULL होने पर एक फॉलबैक मान लौटाता है
  • सिंटैक्स :
    IFNULL(expression, fallback_value)
    
  • NULL से बचकर आप गणना त्रुटियों और डेटा की कमी की समस्याओं को रोक सकते हैं

7.2 IFNULL के व्यावहारिक उदाहरण

  • NULL को डिफ़ॉल्ट मान (0 या कोई विशिष्ट स्ट्रिंग) से बदलें
    SELECT name, IFNULL(bonus, 0) AS bonus FROM employees;
    
  • NULL शामिल करने वाली गणनाओं को सही ढंग से संभालें
    SELECT name, salary + IFNULL(bonus, 0) AS total_income FROM employees;
    
  • NULL को उपयुक्त स्ट्रिंग जैसे “Not registered” में बदलें
    SELECT id, IFNULL(email, 'Not registered') AS email FROM users;
    
  • WHERE क्लॉज़ में NULL मानों को फ़िल्टर करने के लिए उपयोग करें
    SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';
    

7.3 IFNULL और COALESCE के बीच अंतर

  • IFNULL दो तर्कों में से गैर‑NULL मान लौटाता है
  • COALESCE कई तर्कों में से पहला गैर‑NULL मान लौटाता है
  • कैसे चुनें
  • सरल NULL हैंडलिंग → IFNULL
  • पहला गैर‑NULL मान चुनें → COALESCE

7.4 अन्य DBMS में NULL हैंडलिंग

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)
  • Oracle का NVL MySQL के IFNULL के लगभग समान है
  • PostgreSQL और SQL Server आमतौर पर COALESCE का उपयोग करते हैं
  • माइग्रेशन के दौरान, आपको फ़ंक्शनों को उचित रूप से बदलना होगा

7.5 IFNULL के प्रदर्शन और सावधानियां

  • IFNULL COALESCE से हल्का होता है
  • बड़े डेटा सेट में, यदि इंडेक्स अनुकूलन प्रभावित हो तो प्रदर्शन घट सकता है
  • डेटा प्रकारों को सुसंगत रखें (संख्यात्मक और स्ट्रिंग प्रकारों को मिलाएँ नहीं)

7.6 अंतिम निष्कर्ष

  • MySQL में, NULL को सही ढंग से संभालने के लिए IFNULL का उपयोग करें
  • आप डेटा को बिना NULL के प्रभाव के प्रोसेस कर सकते हैं
  • COALESCE और NVL से अंतर समझें और सही फ़ंक्शन चुनें
  • डेटाबेस के बीच माइग्रेट करते समय, NULL‑हैंडलिंग फ़ंक्शनों के अंतर पर ध्यान दें