MySQL में 2 से अधिक कॉलम/फील्ड को जोड़ने (कॉनकैटनेट) के लिए CONCAT() या अधिक सुविधाजनक CONCAT_WS() (With Separator) फंक्शन का उपयोग करें।
सिंटैक्स
CONCAT() - मैनुअल सेपरेटर
SELECT CONCAT(col1, '/', col2, '/', col3, '/', col4) AS combined FROM table;
CONCAT_WS() - ऑटोमैटिक सेपरेटर (अनुशंसित)
SELECT CONCAT_WS('/', col1, col2, col3, col4) AS combined FROM table;
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE MoreThan2ColumnConcat (
Id INT,
Name VARCHAR(20),
Age INT,
Marks INT
);
रिकॉर्ड डालें:
INSERT INTO MoreThan2ColumnConcat VALUES(1, 'John', 24, 89);
INSERT INTO MoreThan2ColumnConcat VALUES(11, 'Larry', 25, 90);
INSERT INTO MoreThan2ColumnConcat VALUES(15, 'Mike', 26, 79);
INSERT INTO MoreThan2ColumnConcat VALUES(16, 'Sam', 21, 99);
सभी रिकॉर्ड देखें:
SELECT * FROM MoreThan2ColumnConcat;
आउटपुट:
+------+-------+------+-------+
| Id | Name | Age | Marks |
+------+-------+------+-------+
| 1 | John | 24 | 89 |
| 11 | Larry | 25 | 90 |
| 15 | Mike | 26 | 79 |
| 16 | Sam | 21 | 99 |
+------+-------+------+-------+
CONCAT() से जोड़ें (मैनुअल सेपरेटर)
SELECT CONCAT(Id, '/', Name, '/', Age, '/', Marks) AS ConcatMoreFields
FROM MoreThan2ColumnConcat;
परिणाम:
+------------------+
| ConcatMoreFields |
+------------------+
| 1/John/24/89 |
| 11/Larry/25/90 |
| 15/Mike/26/79 |
| 16/Sam/21/99 |
+------------------+
CONCAT_WS() से जोड़ें (आसान, NULL-सेफ)
SELECT CONCAT_WS('/', Id, Name, Age, Marks) AS ConcatMoreFields
FROM MoreThan2ColumnConcat;
परिणाम: समान
CONCAT vs CONCAT_WS: महत्वपूर्ण अंतर
| विशेषता | CONCAT() | CONCAT_WS() |
|---|---|---|
| सेपरेटर | मैनुअल लिखना पड़ता है | पहला आर्गुमेंट = सेपरेटर |
| NULL हैंडलिंग | कोई भी NULL → परिणाम NULL | NULL को छोड़ देता है |
| पठनीयता | कम (बहुत सेपरेटर) | अधिक (साफ सिंटैक्स) |
| प्रदर्शन | थोड़ा तेज | नगण्य अंतर |
NULL हैंडलिंग डेमो
यदि Age NULL हो:
INSERT INTO MoreThan2ColumnConcat VALUES(20, 'Test', NULL, 50);
-- CONCAT: पूरा परिणाम NULL
SELECT CONCAT(Id, '/', Name, '/', Age, '/', Marks) FROM ... WHERE Id = 20;
-- परिणाम: NULL
-- CONCAT_WS: NULL छोड़कर बाकी जोड़ता है
SELECT CONCAT_WS('/', Id, Name, Age, Marks) FROM ... WHERE Id = 20;
-- परिणाम: '20/Test/50'
व्यावहारिक उपयोग
-- पूरा पता बनाएं
SELECT CONCAT_WS(', ', address_line1, address_line2, city, state, pincode) AS full_address
FROM customers;
-- CSV एक्सपोर्ट के लिए
SELECT CONCAT_WS(',', id, name, email, phone) FROM users;
-- लॉग एंट्री
SELECT CONCAT_WS(' | ', DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'), user_id, action, details)
FROM audit_log;
नोट
CONCAT_WS= CONCAT With Separator- पहला आर्गुमेंट सेपरेटर है, बाकी जोड़ने वाले मान
- सभी आर्गुमेंट NULL हों तो खाली स्ट्रिंग लौटाता है (NULL नहीं)
- संख्यात्मक कॉलम स्वचालित रूप से स्ट्रिंग में बदल जाते हैं