কম্পিউটার টিউটোরিয়াল

MySQL LENGTH() ফাংশন কীভাবে স্ট্রিং দৈর্ঘ্য মাপে?

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              |
+-----------------+
  1. MySQL-এ REVERSE(), FORMAT(), REPLACE() ব্যবহার করে স্ট্রিং থেকে শুধু সংখ্যা বের করা

  2. MySQL-এ সঠিক স্ট্রিং মান খুঁজে বের করা (COLLATE ব্যবহার)

  3. C#-এ স্ট্রিংয়ের দৈর্ঘ্য (Length) ক্যালকুলেট করা

  4. পাইথনে স্ট্রিং-এর দৈর্ঘ্য পাওয়া