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

MySQL-এ VARCHAR কলামে স্ট্রিং ও নাম্বার মিশ্র থাকলে সর্ট করা (CAST, IF)

VARCHAR কলামে সংখ্যা ও টেক্সট মিশ্র থাকলে সঠিক সর্ট করতে CAST() এবং IF() ব্যবহার করুন।

সমস্যা

mysql> CREATE TABLE DemoTable (EmployeeCode VARCHAR(100));
Query OK, 0 rows affected (1.17 sec)

mysql> INSERT INTO DemoTable VALUES ('190'), ('100'), ('John'), ('120');
Query OK, 4 rows affected

mysql> SELECT * FROM DemoTable ORDER BY EmployeeCode;
-- স্ট্রিং সর্ট: 100, 120, 190, John (সঠিক নয়)

সমাধান: সংখ্যা আগে, তারপর স্ট্রিং

mysql> SELECT * FROM DemoTable
ORDER BY IF(CAST(EmployeeCode AS SIGNED) = 0, 100000000000, CAST(EmployeeCode AS SIGNED));

ফলাফল

+--------------+
| EmployeeCode |
+--------------+
| 100          |
| 120          |
| 190          |
| John         |
+--------------+

ব্যাখ্যা

  • CAST(... AS SIGNED) → স্ট্রিংকে সাইনড ইন্টিজারে কনভার্ট করে
  • স্ট্রিং (যেমন 'John') কাস্ট করলে 0 রিটার্ন করে
  • IF(..., 100000000000, ...) → স্ট্রিংয়ের জন্য বড় মান দিয়ে শেষে পাঠিয়েছে
  • সুতরাং সংখ্যাগুলো সঠিক নম্বরিক অর্ডারে সর্ট হয়, স্ট্রিংগুলো পরে

আধুনিক বিকল্প (MySQL 8.0+)

ORDER BY (EmployeeCode REGEXP '^[0-9]+$') DESC, CAST(EmployeeCode AS UNSIGNED), EmployeeCode

রেগেক্স দিয়ে নাম্বার-অনলি চেক করে প্রথমে নাম্বার, তারপর স্ট্রিং সর্ট করে।

  1. MySQL에서 타임스탬프와 ENUM으로 동시에 정렬하는 방법

  2. MySQL에서 문자로 시작하는 코드(예: J23, C13) 문자+숫자 순으로 정렬하기

  3. MySQL-এ সংখ্যা মিশ্র স্ট্রিং সর্ট করুন

  4. MySQL-এ স্ট্রিং ও নম্বর মিশ্র ডেটার জন্য ডেটা টাইপ নির্বাচন