MySQL में COALESCE() फंक्शन आर्गुमेंट सूची में पहला नॉन-NULL मान लौटाता है। यह NULL मानों को डिफ़ॉल्ट/फॉलबैक मान से बदलने, या एकाधिक कॉलम में से पहला उपलब्ध मान चुनने के लिए अत्यंत उपयोगी है।
सिंटैक्स
COALESCE(value1, value2, ..., valueN)
पहला नॉन-NULL मान लौटाता है; सभी NULL हों तो NULL लौटाता है।
उदाहरण: StudentName या StudentSubject में से पहला नॉन-NULL
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1927 (
StudentName VARCHAR(20),
StudentSubject VARCHAR(20)
);
डेटा इन्सर्ट करें (कुछ NULL के साथ):
mysql> INSERT INTO DemoTable1927 VALUES
('Chris', 'MySQL'),
('David', NULL),
(NULL, 'MongoDB');
डेटा:
+-------------+----------------+ | StudentName | StudentSubject | +-------------+----------------+ | Chris | MySQL | | David | NULL | | NULL | MongoDB | +-------------+----------------+
COALESCE() के साथ क्वेरी:
mysql> SELECT COALESCE(StudentName, StudentSubject) AS Result FROM DemoTable1927;
आउटपुट:
+---------+ | Result | +---------+ | Chris | -- StudentName नॉन-NULL | David | -- StudentName नॉन-NULL (Subject NULL) | MongoDB | -- StudentName NULL, Subject नॉन-NULL +---------+
COALESCE vs IFNULL vs NULLIF
| फंक्शन | आर्गुमेंट | वापसी | मानक |
|---|---|---|---|
| COALESCE | 2+ | पहला नॉन-NULL | ANSI SQL |
| IFNULL | 2 | पहला नॉन-NULL | MySQL-विशिष्ट |
| NULLIF | 2 | NULL यदि बराबर, अन्यथा पहला | ANSI SQL |
व्यावहारिक उपयोग मामले
1. NULL को डिफ़ॉल्ट से बदलें
SELECT COALESCE(phone, 'Not Provided') FROM users;
2. एकाधिक फॉलबैक कॉलम
SELECT COALESCE(mobile, landline, email, 'No Contact') AS contact FROM customers;
3. गणना में NULL सुरक्षा
SELECT price * COALESCE(discount, 0) FROM products;
4. GROUP BY में NULL ग्रुपिंग से बचें
SELECT COALESCE(category, 'Uncategorized') AS cat, COUNT(*) FROM products GROUP BY cat;
प्रदर्शन नोट
COALESCEशॉर्ट-सर्किट मूल्यांकन करता है (पहला नॉन-NULL मिलने पर रुकता है)- इंडेक्स उपयोग प्रभावित नहीं होता (WHERE क्लॉज़ में नहीं)
- एक्सप्रेशन जटिल होने पर ही ओवरहेड
COALESCE ANSI SQL मानक है और पोर्टेबल कोड के लिए IFNULL पर प्राथमिकता दी जाती है।