LIKE প্যাটার্ন ম্যাচিং এবং CAST(SUBSTRING(...) AS SIGNED) ব্যবহার করে স্ট্রিং-সংখ্যা মিশ্র কলাম থেকে নির্দিষ্ট রেকর্ড বের করা যায়।
টেবিল ও ডেটা:
mysql> CREATE TABLE DemoTable2006 (
UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserCode VARCHAR(20)
);
mysql> INSERT INTO DemoTable2006(UserCode) VALUES
('John_12'), ('John_34'), ('John_56'),
('Chris_101'), ('Chris_103'), ('Chris_106');
"John" প্রিফিক্সের রোগুলো থেকে সর্বোচ্চ সংখ্যাওয়ালা রো বের করা:
mysql> SELECT * FROM DemoTable2006
WHERE UserCode LIKE 'John%'
ORDER BY CAST(SUBSTRING(UserCode, 7) AS SIGNED) DESC
LIMIT 1;
আউটপুট:
+--------+----------+ | UserId | UserCode | +--------+----------+ | 3 | John_56 | +--------+----------+
ব্যাখ্যা
UserCode LIKE 'John%'— "John" দিয়ে শুরু হওয়া রো ফিল্টার।SUBSTRING(UserCode, 7)— "John_" (৫ ক্যারেক্টার) বাদ দিয়ে ৭ম ক্যারেক্টার থেকে শুরু (সंख্যা অংশ)।CAST(... AS SIGNED)— স্ট্রিংকে ইন্টিজারে কনভার্ট করে নümerিক্যাল সর্টিং।ORDER BY ... DESC LIMIT 1— সর্বোচ্চ মান ওয়ালা রো।
দ্রষ্টব্য
যদি প্রিফিক্স দৈর্ঘ্য ফিক্সড না হয় (যেমন "John_12", "Johnny_123"), তবে LOCATE('_', UserCode) ব্যবহার করে ডাইনামিক পজিশন বের করুন:
ORDER BY CAST(SUBSTRING(UserCode, LOCATE('_', UserCode)+1) AS SIGNED) DESC