কম্পিউটার

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


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)

  1. মাইএসকিউএল-এর স্ট্রিং থেকে অঙ্কের অংশটি কীভাবে বের করবেন?

  2. কিভাবে MySQL এ সঠিক স্ট্রিং মান অনুসন্ধান করবেন?

  3. কিভাবে C# ব্যবহার করে স্ট্রিং এর দৈর্ঘ্য গণনা করবেন?

  4. কিভাবে পাইথনে একটি স্ট্রিং দৈর্ঘ্য পেতে?