স্ট্রিং কলামে সংখ্যা থাকলে সাধারণ সর্টিং কাজ করে না (যেমন 'CSE 110', 'CSE 15', 'CSE 6')। সংখ্যা হিসেবে কাস্ট করে সর্ট করতে হয়।
টেবিল ও ডেটা:
mysql> CREATE TABLE DemoTable1969 (BranchCode VARCHAR(20));
mysql> INSERT INTO DemoTable1969 VALUES
('CSE 101'), ('CSE 11'), ('CSE 15'), ('CSE 6'), ('CSE 201'), ('CSE 110');
সাধারণ সিলেক্ট (স্ট্রিং সর্ট):
+------------+ | BranchCode | +------------+ | CSE 101 | | CSE 11 | | CSE 15 | | CSE 6 | | CSE 201 | | CSE 110 | +------------+
সংখ্যা হিসেবে সর্ট (ডিসেন্ডিং):
mysql> SELECT * FROM DemoTable1969
ORDER BY CAST(SUBSTRING(BranchCode, LOCATE(' ', BranchCode)+1) AS SIGNED) DESC;
আউটপুট:
+------------+ | BranchCode | +------------+ | CSE 201 | | CSE 110 | | CSE 101 | | CSE 15 | | CSE 11 | | CSE 6 | +------------+
ব্যাখ্যা
LOCATE(' ', BranchCode)— স্পেসের পজিশন বের করে।SUBSTRING(... +1)— স্পেসের পরের অংশ (সংখ্যা) নেয়।CAST(... AS SIGNED)— স্ট্রিংকে ইন্টিজারে কনভার্ট করে।ORDER BY ... DESC— বড় থেকে ছোট সর্ট।
এই টেকনিক ব্যবহার করে যেকোনো স্ট্রিং-সংখ্যা মিশ্র ডেটা সঠিকভাবে সর্ট করা যায়।