MySQL LENGTH() ফাংশন স্ট্রিং দৈর্ঘ্য বাইটে মাপে, অর্থাৎ এটি মাল্টি-বাইট সেফ (multi-byte safe) নয়। মাল্টি-বাইট সেফ ফাংশন যেন CHAR_LENGTH() বা CHARACTER_LENGTH() এর সাথে ফলাফলের পার্থক্য ইউনিকোডে খুব স্পষ্ট হয়, কারণ ইউনিকোডে অধিকাংশ ক্যারেক্টার ২ বাইটে এনকোডেড থাকে, বা UTF-8-এ বাইট সংখ্যা ভিন্ন হয়।
উদাহরণস্বরূপ, ৪টি ২-বাইট ক্যারেক্টার থাকলে LENGTH() দিবে ৮, কিন্তু CHAR_LENGTH() দিবে ৪।
উদাহরণ
mysql> SELECT LENGTH('tutorialspoint');
+--------------------------+
| LENGTH('tutorialspoint') |
+--------------------------+
| 14 |
+--------------------------+
এখন ইউনিকোডে কনভার্ট করলে:
mysql> SET @A = CONVERT('tutorialspoint' USING ucs2);
Query OK, 0 rows affected (0.02 sec)
mysql> SELECT LENGTH(@A);
+------------+
| LENGTH(@A) |
+------------+
| 28 |
+------------+
ইউনিকোডে প্রতিটি ক্যারেক্টার ২ বাইট, তাই ১৪ × ২ = ২৮। কিন্তু CHAR_LENGTH() মাল্টি-বাইট সেফ:
mysql> SELECT CHAR_LENGTH(@A); +-----------------+ | CHAR_LENGTH(@A) | +-----------------+ | 14 | +-----------------+