CHAR_LENGTH() और LENGTH() फ़ंक्शन
MySQL में किसी कॉलम में **विशिष्ट लंबाई** वाले स्ट्रिंग मान खोजने के लिए CHAR_LENGTH() (कैरेक्टर गिनती) या LENGTH() (बाइट गिनती) का उपयोग करें।
सिंटैक्स
केस 1: CHAR_LENGTH() - कैरेक्टर संख्या
SELECT * FROM yourTableName
WHERE CHAR_LENGTH(yourColumnName) = specificLength;
बहु-बाइट कैरेक्टर (यूनिकोड, हिंदी, चीनी) के लिए सही।
केस 2: LENGTH() - बाइट संख्या
SELECT * FROM yourTableName
WHERE LENGTH(yourColumnName) = specificByteLength;
बाइट-स्तरीय जांच के लिए, या लैटिन1/एससीआईआई डेटा के लिए।
व्यावहारिक उदाहरण
1. टेबल बनाएं और डेटा डालें
mysql> CREATE TABLE StringWithSpecificLength (
-> Id INT,
-> Name VARCHAR(100),
-> FavouriteLanguage VARCHAR(50)
-> );
Query OK, 0 rows affected (0.52 sec)
mysql> INSERT INTO StringWithSpecificLength VALUES(1, 'John', 'Java');
mysql> INSERT INTO StringWithSpecificLength VALUES(2, 'Bob', 'PHP');
mysql> INSERT INTO StringWithSpecificLength VALUES(3, 'Carol', 'Python');
mysql> INSERT INTO StringWithSpecificLength VALUES(4, 'Sam', 'Ruby');
mysql> INSERT INTO StringWithSpecificLength VALUES(5, 'Mike', 'Pascal');
2. डेटा देखें
mysql> SELECT * FROM StringWithSpecificLength;
+------+-------+-------------------+
| Id | Name | FavouriteLanguage |
+------+-------+-------------------+
| 1 | John | Java |
| 2 | Bob | PHP |
| 3 | Carol | Python |
| 4 | Sam | Ruby |
| 5 | Mike | Pascal |
+------+-------+-------------------+
5 rows in set (0.00 sec)
3. लंबाई 6 वाले भाषा नाम खोजें
mysql> SELECT * FROM StringWithSpecificLength
-> WHERE CHAR_LENGTH(FavouriteLanguage) = 6;
+------+-------+-------------------+
| Id | Name | FavouriteLanguage |
+------+-------+-------------------+
| 3 | Carol | Python |
| 5 | Mike | Pascal |
+------+-------+-------------------+
2 rows in set (0.00 sec)
CHAR_LENGTH vs LENGTH
| फ़ंक्शन | गिनता है | उदाहरण: 'नमस्ते' (UTF-8) |
|---|---|---|
CHAR_LENGTH() | कैरेक्टर (कोड पॉइंट) | 4 |
LENGTH() | बाइट्स | 12 (3 बाइट्स/कैरेक्टर × 4) |
नियम: यूनिकोड/बहुभाषी डेटा के लिए हमेशा CHAR_LENGTH() उपयोग करें।
रेंज क्वेरी
-- लंबाई 5 से 10 के बीच
WHERE CHAR_LENGTH(col) BETWEEN 5 AND 10
-- न्यूनतम लंबाई
WHERE CHAR_LENGTH(col) >= 3
-- अधिकतम लंबाई
WHERE CHAR_LENGTH(col) <= 20
प्रदर्शन
- कॉलम पर फ़ंक्शन → इंडेक्स उपयोग नहीं (फुल स्कैन)
- बड़े टेबल्स के लिए: लंबाई कॉलम अलग स्टोर करें (जनरेटेड कॉलम/ट्रिगर)
- MySQL 8.0+: फंक्शनल इंडेक्स
CREATE INDEX idx_len ON t ((CHAR_LENGTH(col)))