परिचय
जब कोई क्वेरी कोई पंक्ति नहीं लौटाती (Empty set), और आप इसके बजाय एक डिफ़ॉल्ट मान दिखाना चाहते हैं, तो MySQL का COALESCE() फंक्शन उपयोगी है। यह पहला नॉन-NULL मान लौटाता है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Code VARCHAR(20)
-> );
Query OK, 0 rows affected (1.64 sec)
mysql> INSERT INTO DemoTable VALUES('10');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('45');
Query OK, 1 row affected (0.30 sec)
mysql> INSERT INTO DemoTable VALUES('78');
Query OK, 1 row affected (0.21 sec)
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------+
| Code |
+------+
| 10 |
| 45 |
| 78 |
+------+
3 rows in set (0.00 sec)
मौजूद न होने वाले कोड के लिए डिफ़ॉल्ट मान दिखाने की क्वेरी
mysql> SELECT COALESCE(MAX(Code), 'false') AS WhenReturnSetIsEmpty
-> FROM DemoTable
-> WHERE Code = '90';
परिणाम
+----------------------+
| WhenReturnSetIsEmpty |
+----------------------+
| false |
+----------------------+
1 row in set (0.00 sec)
व्याख्या
WHERE Code = '90'- कोई पंक्ति मेल नहीं खाती (Empty set)MAX(Code)- खाली सेट पर एग्रीगेट फंक्शनNULLलौटाता हैCOALESCE(NULL, 'false')- पहला नॉन-NULL मान 'false' लौटाता है- परिणाम: 1 पंक्ति जिसमें 'false' है (Empty set के बजाय)
COALESCE पैटर्न
COALESCE(expr1, expr2, expr3, ...)
-- पहला नॉन-NULL एक्सप्रेशन लौटाता है
-- सभी NULL हों तो NULL लौटाता है
अन्य उपयोग
COALESCE(column, 'N/A')- NULL मानों के लिए डिफ़ॉल्टCOALESCE(col1, col2, col3)- पहला उपलब्ध मानCOALESCE(SUM(amount), 0)- खाली योग के लिए 0
विकल्प: IFNULL / IF
SELECT IFNULL(MAX(Code), 'false') FROM DemoTable WHERE Code = '90';
SELECT IF(MAX(Code) IS NULL, 'false', MAX(Code)) FROM DemoTable WHERE Code = '90';
नोट
यह तकनीक एग्रीगेट क्वेरीज (COUNT, SUM, MAX, MIN) के लिए काम करती है जो हमेशा एक पंक्ति लौटाती हैं। गैर-एग्रीगेट क्वेरी के लिए UNION या एप्लिकेशन-लेवल हैंडलिंग उपयोग करें।