MySQL में कॉमा-सेपरेटेड स्ट्रिंग में मानों की संख्या गिनने के लिए CHAR_LENGTH() और REPLACE() का उपयोग करके कॉमा की संख्या गिनें और 1 जोड़ें।
सिंटैक्स
SELECT *,
(CHAR_LENGTH(yourColumnName) - CHAR_LENGTH(REPLACE(yourColumnName, ',', '')) + 1) AS total_values
FROM yourTableName;
तर्क समझें
CHAR_LENGTH(col)- मूल स्ट्रिंग की लंबाईCHAR_LENGTH(REPLACE(col, ',', ''))- कॉमा हटाने के बाद की लंबाईअंतर= कॉमा की संख्या+ 1= मानों की संख्या (n कॉमा = n+1 मान)
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE CountValuesCommaSeparated (
Id INT NOT NULL AUTO_INCREMENT,
CommaSeparatedValue TEXT,
PRIMARY KEY(Id)
);
विभिन्न लंबाई के कॉमा-सेपरेटेड मान डालें:
INSERT INTO CountValuesCommaSeparated(CommaSeparatedValue) VALUES('101,104,1900,46675,7895');
INSERT INTO CountValuesCommaSeparated(CommaSeparatedValue) VALUES('1010,18949,37465');
INSERT INTO CountValuesCommaSeparated(CommaSeparatedValue) VALUES('2010,1201,2743874,7485');
INSERT INTO CountValuesCommaSeparated(CommaSeparatedValue) VALUES('4757,457587,48586,378575,3874765,487565');
सभी रिकॉर्ड देखें:
SELECT * FROM CountValuesCommaSeparated;
आउटपुट:
+----+-----------------------------------------+
| Id | CommaSeparatedValue |
+----+-----------------------------------------+
| 1 | 101,104,1900,46675,7895 |
| 2 | 1010,18949,37465 |
| 3 | 2010,1201,2743874,7485 |
| 4 | 4757,457587,48586,378575,3874765,487565 |
+----+-----------------------------------------+
मान गिनने का क्वेरी
SELECT *,
(CHAR_LENGTH(CommaSeparatedValue) - CHAR_LENGTH(REPLACE(CommaSeparatedValue, ',', '')) + 1) AS TotalValue
FROM CountValuesCommaSeparated;
परिणाम:
+----+-----------------------------------------+------------+
| Id | CommaSeparatedValue | TotalValue |
+----+-----------------------------------------+------------+
| 1 | 101,104,1900,46675,7895 | 5 |
| 2 | 1010,18949,37465 | 3 |
| 3 | 2010,1201,2743874,7485 | 4 |
<| 4 | 4757,457587,48586,378575,3874765,487565 | 6 |
+----+-----------------------------------------+------------+
व्याख्या प्रति पंक्ति
| मान | कॉमा | गणना | कुल |
|---|---|---|---|
| 101,104,1900,46675,7895 | 4 | 4+1 | 5 |
| 1010,18949,37465 | 2 | 2+1 | 3 |
| 2010,1201,2743874,7485 | 3 | 3+1 | 4 |
| 4757,457587,48586,378575,3874765,487565 | 5 | 5+1 | 6 |
एज केस हैंडलिंग
खाली स्ट्रिंग या NULL के लिए
SELECT *,
CASE
WHEN CommaSeparatedValue IS NULL OR CommaSeparatedValue = '' THEN 0
ELSE CHAR_LENGTH(CommaSeparatedValue) - CHAR_LENGTH(REPLACE(CommaSeparatedValue, ',', '')) + 1
END AS TotalValue
FROM CountValuesCommaSeparated;
नोट
- यह तरीका डेटा में कॉमा होने पर गलत गिनती देगा (जैसे "1,000,000")
- बेहतर डिज़ाइन: अलग टेबल में नॉर्मलाइज़्ड स्टोरेज उपयोग करें
- MySQL 8.0+ में
JSON_TABLE()याREGEXP_COUNT()(8.0.4+) उपयोग कर सकते हैं