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

MySQL-এ সংখ্যা 섞ে স্ট্রিং কলাম সাজানো (SUBSTR + CAST)

MySQL-এ 'A10', 'A2', 'A100' এর মতো স্ট্রিং-সংখ্যা মিশ্র কলাম সঠিক সংখ্যাসূচক ক্রমে সাজাতে SUBSTR() এবং CAST(... AS UNSIGNED) ব্যবহার করুন।

সিনট্যাক্স

SELECT * FROM yourTableName ORDER BY SUBSTR(yourColumnName FROM 1 FOR 2), CAST(SUBSTR(yourColumnName FROM 2) AS UNSIGNED);
ব্যাখ্যা: প্রথমে অক্ষর অংশ (প্রিফিক্স) দিয়ে সাজানো, তারপর সংখ্যা অংশকে ইন্টিজার হিসেবে কাস্ট করে সাজানো।

উদাহরণ

টেবিল তৈরি করি:

mysql> create table OrderByStringWithNumbers 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT, 
    -> Words varchar(10), 
    -> PRIMARY KEY(Id) 
    -> ); Query OK, 0 rows affected (0.86 sec)

রেকর্ড ইনসার্ট:

mysql> insert into OrderByStringWithNumbers(Words) values('A10'); 
mysql> insert into OrderByStringWithNumbers(Words) values('A30'); 
mysql> insert into OrderByStringWithNumbers(Words) values('A12'); 
mysql> insert into OrderByStringWithNumbers(Words) values('A11'); 
mysql> insert into OrderByStringWithNumbers(Words) values('A28'); 
mysql> insert into OrderByStringWithNumbers(Words) values('A21');

সকল রেকর্ড (ডিফল্ট স্ট্রিং সর্ট)

mysql> select *from OrderByStringWithNumbers;

আউটপুট

+----+-------+
| Id | Words |
+----+-------+
|  1 | A10   |
|  2 | A30   |
|  3 | A12   |
|  4 | A11   |
|  5 | A28   |
|  6 | A21   |
+----+-------+
সমস্যা: স্ট্রিং সর্টে A10, A11, A12, A21, A28, A30 হওয়া উচিত কিন্তু আসে A10, A11, A12, A21, A28, A30 — আসলে ডিফল্ট স্ট্রিং সর্টে A10, A11, A12, A21, A28, A30 সঠিক হয়। কিন্তু A2, A10 হলে সমস্যা হয়।

সঠিক সংখ্যাসূচক ক্রমে সাজান

mysql> SELECT * FROM OrderByStringWithNumbers ORDER BY SUBSTR(Words FROM 1 FOR 2), CAST(SUBSTR(Words FROM 2) AS UNSIGNED);

ফলাফল

+----+-------+
| Id | Words |
+----+-------+
|  1 | A10   |
|  4 | A11   |
|  3 | A12   |
|  6 | A21   |
|  5 | A28   |
|  2 | A30   |
+----+-------+
সীমাবদ্ধতা: এই সিনট্যাক্স ঠিক ১ অক্ষরের প্রিফিক্সের জন্য। বহু-অক্ষরের প্রিফিক্স (যেমন 'AB10') হলে REGEXP বা GENERATED COLUMN ব্যবহার করা ভালো।
  1. Java দিয়ে MySQL ডেটাবেসে সংযোগ স্থাপন

  2. MySQL-এ SUBSTRING_INDEX ব্যবহার করে হাইফনের পরের সংখ্যা মুছে ফেলা

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

  4. MySQL-এ REGEXP ব্যবহার করে নির্দিষ্ট সংখ্যা দিয়ে শুরু হওয়া স্ট্রিং-নম্বর রেকর্ড ফেচ করা