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

MySQL-এ আলফানিউমেরিক কলাম সর্ট করা (বিভিন্ন দৈর্ঘ্যের সংখ্যা সহ)

সমস্যা

স্ট্রিং হিসেবে স সংরক্ষিত সংখ্যাগুলো (যেমন 'STU-MIT-10', 'STU-MIT-143') ডিফল্ট সর্টিংয়ে সঠিক ক্রমে আসে না কারণ স্ট্রিং তে '১৪৩' '১০'-এর আগে আসে।

সারণি ও ডেটা

mysql> create table DemoTable1623 (StudentCode varchar(20));
mysql> insert into DemoTable1623 values('STU-MIT-143'),('STU-MIT-10'),('STU-MIT-150'),('STU-MIT-148');

সমাধান: SUBSTRING_INDEX + কাস্টিং

mysql> select * from DemoTable1623
    -> order by substring_index(StudentCode, '-', 1),
    -> substring_index(StudentCode, '-', -1) + 0;

ফলাফল

+-------------+
| StudentCode |
+-------------+
| STU-MIT-10  |
| STU-MIT-143 |
| STU-MIT-148 |
| STU-MIT-150 |
+-------------+

ব্যাখ্যা

  • SUBSTRING_INDEX(str, delim, count) — ডেলিমিটার দিয়ে ভাগ করে নির্দিষ্ট অংশ বের করে
  • substring_index(StudentCode, '-', 1) — প্রথম অংশ 'STU' (সর্টিংয়ের প্রথম স্তর)
  • substring_index(StudentCode, '-', -1) — শেষ অংশ সংখ্যা (যেমন '১০', '১৪৩')
  • + 0 — স্ট্রিংকে সংখ্যায় কনভার্ট করে যাতে সংখ্যাসামঞ্জস্যপূর্ণ সর্ট হয়

এই পদ্ধতি কোনো রেগুলার এক্সপ্রেশন ছাড়া দ্রুত ও কার্যকর।

  1. Java-এ MySQL ResultSet থেকে কলাম নাম পাওয়া

  2. MySQL-এ নির্দিষ্ট কলাম নামে টেবিল খুঁজে বের করা

  3. MySQL-এ অন্য কলামের শর্তে একটি কলামের যোগফল বের করা (SUM + GROUP BY)

  4. MySQL-এ SUBSTRING_INDEX() ব্যবহার করে কলাম বিভক্ত করা (স্প্লিট)