GROUP BY के साथ HAVING LENGTH() फिल्टर
MySQL में ग्रुपिंग के बाद टेक्स्ट कॉलम की लंबाई के आधार पर ग्रुप्स को फिल्टर करने के लिए HAVING LENGTH() का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable (Title TEXT);
INSERT INTO DemoTable VALUES('Introduction to MySQL');
INSERT INTO DemoTable VALUES('Introduction to Java');
INSERT INTO DemoTable VALUES('Introduction to SQL');
INSERT INTO DemoTable VALUES('Introduction to Python');
INSERT INTO DemoTable VALUES('Introduction to SQL');
INSERT INTO DemoTable VALUES('Introduction to Java');
मौजूदा डेटा
+------------------------+ | Title | +------------------------+ | Introduction to MySQL | | Introduction to Java | | Introduction to SQL | | Introduction to Python | | Introduction to SQL | | Introduction to Java | +------------------------+
क्वेरी: 21 कैरेक्टर से कम लंबाई वाले टाइटल
SELECT * FROM DemoTable GROUP BY LENGTH(Title) HAVING LENGTH(Title) < 21;
आउटपुट
+----------------------+ | Title | +----------------------+ | Introduction to SQL | | Introduction to Java | +----------------------+
लंबाई विश्लेषण
- "Introduction to MySQL" = 21 कैरेक्टर (शामिल नहीं)
- "Introduction to Java" = 20 कैरेक्टर (शामिल)
- "Introduction to SQL" = 19 कैरेक्टर (शामिल)
- "Introduction to Python" = 22 कैरेक्टर (शामिल नहीं)
महत्वपूर्ण बिंदु
GROUP BY LENGTH(Title)लंबाई के आधार पर ग्रुप बनाता हैHAVINGएग्रीगेशन के बाद फिल्टर करता है (WHERE से पहले नहीं)- डुप्लीकेट टाइटल्स ("Introduction to SQL" दो बार) ग्रुपिंग के कारण एक ही बार दिखते हैं
- अगर सभी रिकॉर्ड चाहिए (ग्रुपिंग के बिना), WHERE उपयोग करें
WHERE के साथ तुलना (ग्रुपिंग के बिना)
SELECT * FROM DemoTable WHERE LENGTH(Title) < 21;
+----------------------+ | Title | +----------------------+ | Introduction to Java | | Introduction to SQL | | Introduction to SQL | | Introduction to Java | +----------------------+
व्यावहारिक उपयोग
-- बहुत लंबे या बहुत छोटे नाम फिल्टर करना SELECT Name FROM Users GROUP BY LENGTH(Name) HAVING LENGTH(Name) BETWEEN 2 AND 50;