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

MySQL-এ ORDER BY CASE WHEN REGEXP ব্যবহার করে কাস্টম সর্টিং

নিয়মিত অভিব্যক্তি (Regular Expression) CASE স্টেটমেন্টের সাথে ব্যবহার করুন। প্রথমে একটি টেবিল তৈরি করি:

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Value VARCHAR(20)
);

রেকর্ড যোগ করি:

mysql> INSERT INTO DemoTable(Value) VALUES('101');
mysql> INSERT INTO DemoTable(Value) VALUES('P');
mysql> INSERT INTO DemoTable(Value) VALUES('A');
mysql> INSERT INTO DemoTable(Value) VALUES('53');
mysql> INSERT INTO DemoTable(Value) VALUES('R');
mysql> INSERT INTO DemoTable(Value) VALUES('C');
mysql> INSERT INTO DemoTable(Value) VALUES('190');

সকল রেকর্ড দেখতে:

mysql> SELECT * FROM DemoTable;

আউটপুট:

+----+-------+
| Id | Value |
+----+-------+
| 1  | 101   |
| 2  | P     |
| 3  | A     |
| 4  | 53    |
| 5  | R     |
| 6  | C     |
| 7  | 190   |
+----+-------+

ORDER BY CASE দিয়ে সর্ট করার কোয়েরি:

mysql> SELECT Id, Value FROM DemoTable 
ORDER BY CASE WHEN Value REGEXP '[a-zA-Z]' THEN 0 ELSE 0+Value END ASC, Value;

আউটপুট:

+----+-------+
| Id | Value |
+----+-------+
| 3  | A     |
| 6  | C     |
| 2  | P     |
| 5  | R     |
| 4  | 53    |
| 1  | 101   |
| 7  | 190   |
+----+-------+

ব্যাখ্যা: এখানে REGEXP '[a-zA-Z]' দিয়ে চেক করা হয়েছে যে Value-তে কোনো অক্ষর আছে কিনা। যদি হয় (THEN 0), তবে সেগুলো প্রথমে আসবে এবং অক্ষর অনুযায়ী সাজাবে। না হলে (ELSE 0+Value) সংখ্যাগুলো সংখ্যাসমূহিক ক্রমে সাজাবে। 0+Value লিখলে স্ট্রিং সংখ্যায় রূপান্তরিত হয়।

  1. MySQL-এ IFNULL() ফাংশন দিয়ে NULL মানকে ০ দিয়ে প্রতিস্থাপন করা

  2. MySQL কোয়ারি দিয়ে চতুর্থ সর্বোচ্চ মান বের করার পদ্ধতি

  3. MySQL-এ ORDER BY CASE WHEN ব্যবহার করে কাস্টম সর্টিং করা

  4. MySQL-এ SELECT ক্যোয়ারির ফলাফল অর্ডার করা