MySQL में IFNULL और COALESCE
NULL से निपटना
NULL का मतलब SQL में "कोई value नहीं" है, और यह समस्याएँ करा सकता है — खाली displays और टूटी गणनाएँ। MySQL आपको IFNULL और COALESCE देता है NULL को समझदार default से बदलने को, ताकि आपके results साफ़ रहें और गणित चले।
IFNULL
SELECT name, IFNULL(phone, 'N/A') AS phone FROM customers;
IFNULL(value, default) value लौटाता है अगर वो null न हो, वरना default। यहाँ गायब phone numbers खाली NULL के बजाय "N/A" दिखाते हैं।
COALESCE
SELECT name, COALESCE(phone, mobile, 'N/A') AS contact FROM customers;
COALESCE कई values लेता है और पहला non-null लौटाता है। यहाँ यह पहले phone, फिर mobile, और आख़िर में "N/A" आज़माता है। यह fallbacks की श्रृंखला को बढ़िया है।
IFNULL बनाम COALESCE
| बात | IFNULL | COALESCE |
|---|---|---|
| Arguments | ठीक 2 | 2 या ज़्यादा |
| Standard SQL | MySQL-विशेष | Standard |
| किसके लिए | एक default | Fallbacks की श्रृंखला |
सरल दो-value मामले को IFNULL, और कई fallbacks हों या standard SQL चाहिए तब COALESCE इस्तेमाल कीजिए।
गणना में NULLs
-- कुछ rows को bonus NULL है SELECT name, salary + IFNULL(bonus, 0) AS total FROM employees;
NULL के साथ कोई भी गणित NULL देता है, तो salary + bonus ग़ायब हो जाता अगर bonus NULL हो। bonus को IFNULL(bonus, 0) में लपेटना गायब bonus को 0 मानता है, तो total सही है।
कौन-सा इस्तेमाल करें
- IFNULL — तेज़, एक column और एक default।
- COALESCE — कई fallbacks, या standard SQL लिखते समय।
दोनों वही मूल समस्या हल करते हैं; COALESCE बस ज़्यादा लचीला और databases में portable है।
आम गलतियाँ
- गणित में NULLs अनदेखा करना। वे पूरे result को NULL बना देते हैं।
- IFNULL को बहुत arguments देना। यह ठीक दो लेता है — ज़्यादा को COALESCE इस्तेमाल कीजिए।
- NULL को 0 या empty string से मिलाना। NULL "कोई value नहीं" है, zero नहीं।
- = NULL से तुलना करना।
IS NULLइस्तेमाल कीजिए,= NULLनहीं।
सारांश
- NULL का मतलब "कोई value नहीं" और यह displays व गणनाएँ तोड़ सकता है।
- IFNULL(value, default) NULL को default से बदलता है (दो arguments)।
- COALESCE कई values में पहला non-null लौटाता है।
- NULL गणित ठीक करने को columns को IFNULL/COALESCE में लपेटिए।
- एक default को IFNULL, fallbacks की श्रृंखला को COALESCE इस्तेमाल कीजिए।
आगे, conditional logic जोड़िए CASE expression से, या numbers round कीजिए ROUND, CEIL और FLOOR से।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में IFNULL क्या करता है?
COALESCE क्या करता है?
IFNULL और COALESCE में क्या अंतर है?
NULLs गणना में समस्याएँ क्यों कराते हैं?
salary + bonus NULL बन जाता है अगर bonus NULL हो, salary छिपाकर। IFNULL या COALESCE से NULL को 0 बनाना ऐसी गणनाएँ ठीक करता है।NULL को default value से कैसे बदलूँ?
IFNULL(phone, 'N/A') या COALESCE(phone, mobile, 'N/A')। Query फिर जहाँ value NULL होती वहाँ default दिखाती है।