समाधान: COALESCE() फ़ंक्शन
COALESCE() फ़ंक्शन अपने तर्कों में से पहला गैर-NULL मान लौटाता है। इसका उपयोग दो कॉलम को संयोजित करने के लिए किया जा सकता है जहां एक NULL हो सकता है।
सिंटैक्स
SELECT COALESCE(column1, column2) AS combined_column
FROM yourTableName;
व्यावहारिक उदाहरण
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE combineTwoColumnsDemo (
-> UserId INT,
-> UserName VARCHAR(20),
-> UserAge INT
-> );
mysql> INSERT INTO combineTwoColumnsDemo VALUES
-> (101, 'John', 23),
-> (102, 'Carol', 20),
-> (103, 'Bob', 25),
-> (104, 'Mike', 26),
-> (105, NULL, 23),
-> (105, 'Maxwell', NULL);
मूल डेटा
| UserId | UserName | UserAge |
| 101 | John | 23 |
| 102 | Carol | 20 |
| 103 | Bob | 25 |
| 104 | Mike | 26 |
| 105 | NULL | 23 |
| 105 | Maxwell | NULL |
COALESCE क्वेरी
mysql> SELECT
-> UserName,
-> UserAge,
-> COALESCE(UserName, UserAge) AS Combine_UserName_UserAge
-> FROM combineTwoColumnsDemo;
परिणाम
| UserName | UserAge | Combine_UserName_UserAge |
| John | 23 | John |
| Carol | 20 | Carol |
| Bob | 25 | Bob |
| Mike | 26 | Mike |
| NULL | 23 | 23 |
| Maxwell | NULL | Maxwell |
व्याख्या
- पंक्ति 1-4: UserName गैर-NULL है, इसलिए UserName लौटाया जाता है
- पंक्ति 5: UserName NULL है, इसलिए UserAge (23) लौटाया जाता है
- पंक्ति 6: UserName गैर-NULL है, इसलिए Maxwell लौटाया जाता है
COALESCE vs IFNULL vs CASE
| फ़ंक्शन | तर्क | मानक |
| COALESCE | 2 या अधिक | ANSI SQL |
| IFNULL | केवल 2 | MySQL-विशिष्ट |
| IF/CASE | लचीला | ANSI SQL |
व्यावहारिक उपयोग मामले
- फॉलबैक मान: COALESCE(phone, email, 'संपर्क नहीं')
- डेटा सफाई: COALESCE(trimmed_col, original_col)
- रिपोर्टिंग: COALESCE(commission, 0) गणना के लिए
नोट: डेटा प्रकार
COALESCE सभी तर्कों को सामान्य डेटा प्रकार में बदल देता है। संख्या और स्ट्रिंग मिश्रण में, परिणाम स्ट्रिंग होगा (जैसा कि उदाहरण में 23 स्ट्रिंग '23' बन गया)।