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

MySQL-এ ORDER BY CASE ব্যবহার করে কাস্টম ক্রমে রেকর্ড সাজানো

MySQL-এ ORDER BY CASE এক্সপ্রেশন ব্যবহার করে নির্দিষ্ট শর্তের ভিত্তিতে কাস্টম সর্টিং করা যায়। এটি স্ট্যান্ডার্ড ASC/DESC সর্টিংয়ের বাইরে ফ্লেক্সিবিলিটি দেয়।

টেবিল ও ডেটা

mysql> CREATE TABLE DemoTable2039 (
    -> Name VARCHAR(20)
    -> ); 
Query OK, 0 rows affected (0.62 sec)

mysql> INSERT INTO DemoTable2039 VALUES ('John Doe'), ('John Smith'), ('Chris Brown'), ('Adam Smith'), ('David Miller');
mysql> SELECT * FROM DemoTable2039;
+--------------+
| Name         |
+--------------+
| John Doe     |
| John Smith   |
| Chris Brown  |
| Adam Smith   |
| David Miller |
+--------------+

কাস্টম সর্টিং কোয়ারি

শর্ত: যাদের নামের মধ্যে 'Smith' আছে সেগুলো শেষে, বাকিগুলো আগে, তারপর নাম অনুযায়ী ASC।

mysql> SELECT * FROM DemoTable2039
    -> ORDER BY 
    ->   CASE WHEN Name LIKE '%Smith%' THEN 101 ELSE 100 END,
    ->   Name;

আউটপুট

+--------------+
| Name         |
+--------------+
| Chris Brown  |
| David Miller |
| John Doe     |
| Adam Smith   |
| John Smith   |
+--------------+

ব্যাখ্যা: CASE এক্সপ্রেশন 'Smith' না থাকলে ১০০, থাকলে ১০১ রিটার্ন করে। সেজন্য নন-স্মিথ আগে আসে। তারপর সেকেন্ডারি সর্ট Name দিয়ে অক্ষরক্রমে।

  1. MySQL-এ REGEXP ব্যবহার করে নির্দিষ্ট সংখ্যক শব্দ থাকা রেকর্ড ফিল্টার করুন

  2. MySQL-এ VARCHAR কলামে স্ট্রিং ও সংখ্যা মিশ্রিত ডেটা সর্ট করা (ORDER BY + 0)

  3. MySQL ROUND() 함수로 숫자 반올림하기

  4. MySQL에서 IS NOT NULL로 NULL 제외하고 NOT NULL 값만 다른 테이블로 복사하기