LENGTH() फंक्शन स्ट्रिंग लंबाई बाइट्स में मापता है — यह मल्टी-बाइट सुरक्षित नहीं है।
ASCII स्ट्रिंग (सिंगल-बाइट)
mysql> SELECT LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
| 14 |
+--------------------------+
14 कैरेक्टर्स = 14 बाइट्स
यूनिकोड (UCS2) में रूपांतरण के बाद
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT LENGTH(@A);
+------------+
| LENGTH(@A) |
+------------+
| 28 |
+------------+
UCS2 में प्रत्येक कैरेक्टर 2 बाइट्स → 14 × 2 = 28 बाइट्स
तुलना: CHAR_LENGTH() (मल्टी-बाइट सुरक्षित)
mysql> SELECT CHAR_LENGTH(@A);
+-----------------+
| CHAR_LENGTH(@A) |
+-----------------+
| 14 |
+-----------------+
CHAR_LENGTH() वास्तविक कैरेक्टर गिनती (14) देता है
सारांश तालिका
| फंक्शन | इकाई | मल्टी-बाइट सुरक्षित | उपयोग |
|---|---|---|---|
| LENGTH() / OCTET_LENGTH() | बाइट्स | नहीं | स्टोरेज आकार, बाइनरी डेटा |
| CHAR_LENGTH() / CHARACTER_LENGTH() | कैरेक्टर्स | हां | स्ट्रिंग लंबाई लॉजिक, वैलिडेशन, UI |
UTF-8 में व्यवहार
- ASCII कैरेक्टर्स: 1 बाइट
- लैटिन विस्तारित: 2 बाइट्स
- एशियाई कैरेक्टर्स: 3 बाइट्स
- इमोजी: 4 बाइट्स
LENGTH()परिवर्तनीय बाइट्स देता है,CHAR_LENGTH()स्थिर कैरेक्टर गिनती
सर्वोत्तम अभ्यास: लगभग सभी एप्लिकेशन लॉजिक के लिएCHAR_LENGTH()उपयोग करें। केवल निम्न-स्तरीय स्टोरेज/नेटवर्क गणना के लिएLENGTH()।