MySQL LENGTH() फ़ंक्शन स्ट्रिंग की लंबाई को 'बाइट्स' में मापता है, जिसका अर्थ है कि यह मल्टीबाइट सुरक्षित नहीं है। बहु-बाइट सुरक्षित कार्यों, जैसे CHAR_LENGTH() या CHARACTER_LENGTH(), और LENGTH() फ़ंक्शन के बीच परिणाम का अंतर विशेष रूप से यूनिकोड के लिए प्रासंगिक है, जिसमें अधिकांश वर्ण दो बाइट्स में एन्कोड किए गए हैं या UTF-8 के लिए प्रासंगिक हैं जहां बाइट्स की संख्या भिन्न होती है। उदाहरण के लिए, यदि किसी स्ट्रिंग में चार 2-बाइट वर्ण हैं तो LENGTH() फ़ंक्शन 8 लौटाएगा, जबकि CHAR_LENGTH() या CHARACTER_LENGTH() फ़ंक्शन 4 वापस आएगा। यह नीचे दिए गए उदाहरण में प्रदर्शित किया गया है -
उदाहरण
mysql> Select LENGTH('tutorialspoint'); +--------------------------+ | LENGTH('tutorialspoint') | +--------------------------+ | 14 | +--------------------------+ 1 row in set (0.00 sec)
उपरोक्त परिणाम सेट से पता चलता है कि स्ट्रिंग 'tutorialspoint' की लंबाई 14 है क्योंकि यह अभी तक यूनिकोड वर्ण में परिवर्तित नहीं हुई है। निम्नलिखित क्वेरी इसे यूनिकोड वर्ण में बदल देती है -
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2); Query OK, 0 rows affected (0.02 sec)
यूनिकोड में स्ट्रिंग को कनवर्ट करने के बाद, यह 14 के बजाय 28 परिणाम देता है क्योंकि यूनिकोड में एक एकल वर्ण 2-बाइट लेता है जैसा कि नीचे दिखाया गया है -
mysql> Select LENGTH(@A); +------------+ | LENGTH(@A) | +------------+ | 28 | +------------+ 1 row in set (0.00 sec)
लेकिन CHAR_LENGTH() परिणाम 14 देता है क्योंकि यह मल्टी-बाइट सुरक्षित फ़ंक्शन है जैसा कि नीचे दिखाया गया है -
mysql> Select CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+ 1 row in set (0.00 sec)