অ্যালফানিউমেরিক কোড (যেমন 'Adam_101') এর শেষ ৩ অঙ্কের সংখ্যা অনুযায়ী সর্ট করতে RIGHT() ফাংশন ব্যবহার করা হয়।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1948 (StudentCode VARCHAR(20));
mysql> INSERT INTO DemoTable1948 VALUES
('121John_567'), ('Adam_101'), ('Bob_563'), ('Sam_346');
ডেটা যাচাই
mysql> SELECT * FROM DemoTable1948;
+-------------+ | StudentCode | +-------------+ | 121John_567 | | Adam_101 | | Bob_563 | | Sam_346 | +-------------+
কোয়েরি: শেষ ৩ অঙ্ক অনুযায়ী সর্ট
mysql> SELECT * FROM DemoTable1948
ORDER BY RIGHT(StudentCode, 3);
আউটপুট:
+-------------+ | StudentCode | +-------------+ | Adam_101 | | Sam_346 | | Bob_563 | | 121John_567 | +-------------+
ব্যাখ্যা
RIGHT(str, 3)— স্ট্রিংয়ের ডান পাশ থেকে ৩ ক্যারেক্টার বের করে।- এখানে ধরে নেওয়া হয়েছে সংখ্যা সবসময় শেষ ৩ অঙ্কে থাকে।
- স্ট্রিং-এর মতো সর্ট হবে (লেক্সিকোগ্রাফিক্যালি)। সংখ্যা হিসেবে সর্ট করতে
CAST(RIGHT(StudentCode, 3) AS UNSIGNED)ব্যবহার করুন।
উন্নত কোয়েরি: সংখ্যা হিসেবে সর্ট
SELECT * FROM DemoTable1948 ORDER BY CAST(RIGHT(StudentCode, 3) AS UNSIGNED);
সাধারণ প্যাটার্ন: REGEXP_EXTRACT (MySQL 8.0+)
যদি সংখ্যা ফিক্সড পজিশনে না থাকে:
SELECT *, CAST(REGEXP_SUBSTR(StudentCode, '[0-9]+$') AS UNSIGNED) AS num FROM DemoTable1948 ORDER BY num;
নোট: REGEXP_SUBSTR MySQL 8.0+ এ উপলব্ধ।
সতর্কতা
RIGHT()স্ট্রিং রিটার্ন করে — '100' < '20' (স্ট্রিং সর্ট)। সংখ্যা সর্টে CAST বাধ্যতামূলক।- ভিন্ন দৈর্ঘ্যের সংখ্যা থাকলে (যেমন ১০১, ৯৯) স্ট্রিং সর্ট ভুল দেবে।