MySQL में SELECT क्वेरी में NULL मानों को डिफॉल्ट मान से बदलने के चार मुख्य तरीके हैं: IFNULL(), COALESCE(), CASE स्टेटमेंट, और IF()।
टेस्ट टेबल
CREATE TABLE ReplaceNULLDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(10),
Marks INT,
PRIMARY KEY(Id)
);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('Larry', 90);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('Carol', NULL);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('David', NULL);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('Bob', 67);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('Sam', 78);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('Mike', NULL);
INSERT INTO ReplaceNULLDemo(Name, Marks) VALUES('John', 98);
मूल डेटा:
+----+-------+-------+
| Id | Name | Marks |
+----+-------+-------+
| 1 | Larry | 90 |
| 2 | Carol | NULL |
| 3 | David | NULL |
| 4 | Bob | 67 |
| 5 | Sam | 78 |
| 6 | Mike | NULL |
| 7 | John | 98 |
+----+-------+-------+
केस 1: IFNULL() - दो आर्गुमेंट
SELECT IFNULL(Marks, 0) AS ReplacementOfNULLWith0 FROM ReplaceNULLDemo;
परिणाम:
+------------------------+
| ReplacementOfNULLWith0 |
+------------------------+
| 90 |
| 0 |
| 0 |
| 67 |
| 78 |
| 0 |
| 98 |
+------------------------+
केस 2: COALESCE() - एकाधिक आर्गुमेंट (अनुशंसित)
SELECT COALESCE(Marks, 0) AS ReplacementOfNULLWith0 FROM ReplaceNULLDemo;
परिणाम: IFNULL जैसा ही
COALESCE का लाभ:
-- पहला नॉन-NULL मान लौटाता है
SELECT COALESCE(column1, column2, column3, 'Default') FROM table;
केस 3: CASE स्टेटमेंट - पूर्ण नियंत्रण
SELECT CASE
WHEN Marks IS NULL THEN 0
ELSE Marks
END AS ReplacementOfNULLWith0
FROM ReplaceNULLDemo;
परिणाम: उपरोक्त जैसा ही
CASE का लाभ: जटिल शर्तें
SELECT CASE
WHEN Marks IS NULL THEN 'No Marks'
WHEN Marks < 50 THEN 'Fail'
WHEN Marks < 75 THEN 'Pass'
ELSE 'Excellent'
END AS Grade
FROM ReplaceNULLDemo;
केस 4: IF() फंक्शन - MySQL-विशिष्ट
SELECT IF(Marks IS NULL, 0, Marks) AS ReplacementOfNULLWith0 FROM ReplaceNULLDemo;
परिणाम: उपरोक्त जैसा ही
तुलना तालिका
| फंक्शन | आर्गुमेंट | मानक SQL | उपयोग |
|---|---|---|---|
IFNULL(a,b) | 2 | नहीं (MySQL) | सरल NULL रिप्लेसमेंट |
COALESCE(a,b,c...) | 2+ | हाँ (ANSI) | एकाधिक फॉलबैक, पोर्टेबल |
CASE WHEN | लचीला | हाँ (ANSI) | जटिल तर्क, शर्तें |
IF(cond, t, f) | 3 | नहीं (MySQL) | सरल बाइनरी शर्त |
सिफारिश
- सामान्य उपयोग:
COALESCE()- मानक, लचीला, पठनीय - सरल केस:
IFNULL()- ठीक है लेकिन सीमित - जटिल तर्क:
CASE- पूर्ण नियंत्रण - टालें:
IF()- MySQL-विशिष्ट, पोर्टेबल नहीं