MySQL में दो कॉलम में से पहला नॉन-NULL मान चुनने के चार तरीके हैं: IFNULL(), COALESCE(), CASE, और IF()।
टेस्ट टेबल
CREATE TABLE SelectNotNullColumnsDemo (
Id INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(20),
Age INT,
PRIMARY KEY(Id)
);
INSERT INTO SelectNotNullColumnsDemo(Name, Age) VALUES('John', NULL);
INSERT INTO SelectNotNullColumnsDemo(Name, Age) VALUES(NULL, 23);
डेटा:
+----+------+------+
| Id | Name | Age |
+----+------+------+
| 1 | John | NULL |
| 2 | NULL | 23 |
+----+------+------+
केस 1: IFNULL() - दो आर्गुमेंट
SELECT IFNULL(Name, Age) AS NotNULLValue FROM SelectNotNullColumnsDemo;
परिणाम:
+--------------+
| NotNULLValue |
+--------------+
| John |
| 23 |
+--------------+
केस 2: COALESCE() - एकाधिक आर्गुमेंट (अनुशंसित)
SELECT COALESCE(Name, Age) AS NotNULLValue FROM SelectNotNullColumnsDemo;
परिणाम: समान
COALESCE का लाभ: 2+ कॉलम
SELECT COALESCE(col1, col2, col3, col4, 'Default') FROM table;
केस 3: CASE स्टेटमेंट - पूर्ण नियंत्रण
SELECT CASE
WHEN Name IS NOT NULL THEN Name
ELSE Age
END AS NotNULLValue
FROM SelectNotNullColumnsDemo;
परिणाम: समान
CASE का लाभ: जटिल तर्क
SELECT CASE
WHEN Name IS NOT NULL AND Name <> '' THEN Name
WHEN Age IS NOT NULL THEN Age
ELSE 'Unknown'
END AS Value
FROM table;
केस 4: IF() फंक्शन - MySQL-विशिष्ट
SELECT IF(Name IS NULL, Age, Name) AS NotNULLValue FROM SelectNotNullColumnsDemo;
परिणाम: समान
तुलना तालिका
| फंक्शन | सिंटैक्स | मानक SQL | आर्गुमेंट | सर्वश्रेष्ठ उपयोग |
|---|---|---|---|---|
IFNULL(a,b) | IFNULL(a,b) | नहीं | 2 | सरल 2-कॉलम फॉलबैक |
COALESCE(a,b,c...) | COALESCE(a,b,c...) | हाँ (ANSI) | 2+ | एकाधिक फॉलबैक, पोर्टेबल |
CASE WHEN | CASE WHEN cond THEN a ELSE b END | हाँ (ANSI) | लचीला | जटिल शर्तें |
IF(cond,t,f) | IF(cond, true_val, false_val) | नहीं | 3 | सरल बाइनरी शर्त |
व्यावहारिक उदाहरण: संपर्क जानकारी
SELECT COALESCE(mobile, landline, email, 'No contact') AS contact_info
FROM customers;
नोट
COALESCEANSI SQL मानक है - अन्य डेटाबेस में भी काम करता हैIFNULLऔरIFकेवल MySQL में- प्रदर्शन: सभी समान हैं सरल मामलों के लिए
COALESCEशॉर्ट-सर्किट मूल्यांकन करता है (पहला नॉन-NULL मिलते ही रुकता है)