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

MySQL-এ VARCHAR কলামকে সংখ্যা মনে করা ORDER BY-এ (+0 ট্রিক)

স্ট্রিং হিসেবে সংরক্ষিত সংখ্যা সঠিক ক্রমে সাজানো

যদি সংখ্যা VARCHAR কলামে থাকে, তবে ORDER BY এ স্ট্রিং হিসেবে সাজাবে (যেমন: 1, 10, 100, 2, 20...). সংখ্যা হিসেবে সাজাতে +0 ব্যবহার করুন।

সিনট্যাক্স

SELECT yourColumnName FROM yourTableName ORDER BY yourColumnName + 0 DESC;

উদাহরণ

mysql> CREATE TABLE selectOrderdemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(100), RankNumber VARCHAR(100)
    -> );
mysql> INSERT INTO selectOrderdemo (Name, RankNumber) VALUES
    -> ('Larry','-100'), ('John','50'), ('Bob','0'), ('Carol','-110'), ('David','98');

Case ১: DESC (বড় থেকে ছোট) - +0 ব্যবহার

mysql> SELECT RankNumber FROM selectOrderdemo ORDER BY RankNumber + 0 DESC;
+------------+
| RankNumber |
+------------+
| 98         |
| 50         |
| 0          |
| -100       |
| -110       |
+------------+

Case ২: ASC (ছোট থেকে বড়)

mysql> SELECT RankNumber FROM selectOrderdemo ORDER BY RankNumber + 0;
+------------+
| RankNumber |
+------------+
| -110       |
| -100       |
| 0          |
| 50         |
| 98         |
+------------+

Case ৩: সব কলামসহ

mysql> SELECT * FROM selectOrderdemo ORDER BY RankNumber + 0 DESC;
+----+-------+------------+
| Id | Name  | RankNumber |
+----+-------+------------+
| 5  | David | 98         |
| 2  | John  | 50         |
| 3  | Bob   | 0          |
| 1  | Larry | -100       |
| 4  | Carol | -110       |
+----+-------+------------+

বিকল্প: CAST(RankNumber AS SIGNED) বা CONVERT(RankNumber, SIGNED)ও ব্যবহার করা যায়।

  1. MySQL-এ SUBSTRING_INDEX() দিয়ে কমা-সেপারেটেড সংখ্যার সেটের প্রথম সংখ্যা দিয়ে ORDER BY করা

  2. MySQL-এ REPLACE() ফাংশন ব্যবহার করে স্পেশাল ক্যারেক্টারসহ স্ট্রিং সিলেক্ট করা

  3. MySQL-এ ORDER BY Amount=0, Amount দিয়ে শূন্য মানগুলো শেষে পাঠানো

  4. MySQL-এ স্ট্রিং দৈর্ঘ্য অনুযায়ী তারকা চিহ্ন যোগ করা