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)
উপরের ফলাফল সেটটি দেখায় যে স্ট্রিং 'টিউটোরিয়াল পয়েন্ট' এর দৈর্ঘ্য 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)