char_length() vs length(): ক্যারেক্টার vs বাইট গণনা
- CHAR_LENGTH() / CHARACTER_LENGTH(): ক্যারেক্টার সংখ্যা গণনা করে (মাল্টি-বাইট ক্যারেক্টরেও ১ গড়ে)।
- LENGTH(): বাইট সংখ্যা গণনা করে। Unicode (UTF-8) ক্যারেক্টার ২-৪ বাইট নিতে পারে।
সাধারণ স্ট্রিং (ASCII) - একই ফলাফল
mysql> SELECT CHAR_LENGTH('John'); -- 4
mysql> SELECT LENGTH('Tim'); -- 3
Unicode কলামে পার্থক্য
mysql> CREATE TABLE LengthAndCharLengthDemo (
-> FirstName VARCHAR(200),
-> SecondName VARCHAR(255) CHARACTER SET ucs2 -- 2 bytes per char
-> );
mysql> INSERT INTO LengthAndCharLengthDemo VALUES ('John', 'Ritter');
mysql> SELECT CHAR_LENGTH(FirstName), LENGTH(SecondName) FROM LengthAndCharLengthDemo WHERE FirstName='John' AND SecondName='John';
+------------------------+--------------------+
| CHAR_LENGTH(FirstName) | LENGTH(SecondName) |
+------------------------+--------------------+
| 4 | 8 |
+------------------------+--------------------+
ফলাফল: CHAR_LENGTH = ৪ (ক্যারেক্টার), LENGTH = ৮ (বাইট, কারণ UCS2-এ প্রতিটি ক্যারেক্টার ২ বাইট)।
সুপারিশ: স্ট্রিং দৈর্ঘ্য যাচাইতে সবসময় CHAR_LENGTH() ব্যবহার করুন।