Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में SELECT स्टेटमेंट से NULL मान बदलने के विभिन्न तरीके

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-विशिष्ट, पोर्टेबल नहीं
  1. - MySQL में MAX(DISTINCT ...) vs MAX(): क्या अंतर है?

    MySQL MAX(DISTINCT ...) vs MAX(): कोई व्यावहारिक अंतर नहीं MySQL में MAX(DISTINCT column) और MAX(column) का परिणाम **समान** होता है। MySQL आंतरिक रूप से MAX() को DISTINCT के रूप में व्यवहार करता है क्योंकि अधिकतम मान खोजने के लिए डुप्लिकेट मान अप्रासंगिक हैं। दोनों सिंटैक्स -- DISTINCT के साथ SELEC

  1. - MySQL में उसी SELECT स्टेटमेंट में एलियास के मान का उपयोग कैसे करें

    यूजर-डिफाइंड वेरिएबल के साथ SELECT में एलियास मान पुनः उपयोग करना MySQL में आप उसी SELECT स्टेटमेंट में कॉलम एलियास को सीधे रेफर नहीं कर सकते। इसके बजाय यूजर-डिफाइंड वेरिएबल (@variable) का उपयोग करें। सिंटैक्स: SELECT @yourAliasName := CURDATE() AS anyAliasName, CONCAT(yourValue., yourColumnN

  1. - MySQL में != NULL और IS NOT NULL का अंतर

    NULL तुलना: != NULL बनाम IS NOT NULL MySQL में किसी मान की तुलना !=NULL से करने पर परिणाम NULL होता है, इसलिए !=NULL अर्थहीन है। सही तरीका IS NOT NULL है। टेबल बनाएं और डेटा डालें: mysql> create table DemoTable1970 ( Value int ); Query OK, 0 rows affected (0.00 sec) mysql> insert into DemoTabl