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

MySQL-এ স্ট্রিং-এর শেষ ২ ক্যারেক্টার অনুযায়ী ORDER BY করা

MySQL-এ কোনো স্ট্রিং কলামের শেষ N ক্যারেক্টার দিয়ে সর্ট করতে RIGHT() ফাংশন ORDER BY ক্লজে ব্যবহার করুন।

সিনট্যাক্স

SELECT column_name FROM table_name ORDER BY RIGHT(column_name, 2);

উদাহরণ

CREATE TABLE order_by_last2 (
    customer_id VARCHAR(20),
    customer_name VARCHAR(20)
);

INSERT INTO order_by_last2 (customer_id, customer_name) VALUES
('John-98', 'John'), ('Carol-91', 'Carol'), ('Bob-99', 'Bob'), ('David-67', 'David');

আরোহী ক্রম (ASC) — ডিফল্ট

SELECT customer_id FROM order_by_last2 ORDER BY RIGHT(customer_id, 2);
+------------+
| customer_id|
+------------+
| David-67   |
| Carol-91   |
| John-98    |
| Bob-99     |
+------------+

অবরোহী ক্রম (DESC)

SELECT customer_id FROM order_by_last2 ORDER BY RIGHT(customer_id, 2) DESC;
+------------+
| customer_id|
+------------+
| Bob-99     |
| John-98    |
| Carol-91   |
| David-67   |
+------------+

অন্যান্য স্ট্রিং ফাংশন সহ সর্টিং

শুরু থেকে N ক্যারেক্টার: LEFT()

ORDER BY LEFT(column_name, 3)

সাবস্ট্রিং (পজিশন ও লেংথ): SUBSTRING()

ORDER BY SUBSTRING(column_name, 3, 2)  -- ৩য় পজিশন থেকে ২ ক্যারেক্টার

পারফরম্যান্স বিবেচনা

  • RIGHT(), LEFT(), SUBSTRING() ফাংশন ব্যবহার করলে ইনডেক্স ব্যবহার হয় না ( فول টেবিল স্ক্যান)
  • বড় টেবিলে পারফরম্যান্সের জন্য জেনারেটেড কলাম + ইনডেক্স ব্যবহার করুন (MySQL 5.7+):
ALTER TABLE order_by_last2 
ADD COLUMN last_two_chars VARCHAR(2) GENERATED ALWAYS AS (RIGHT(customer_id, 2)) STORED,
ADD INDEX idx_last_two (last_two_chars);

-- এখন দ্রুত সর্ট হবে
SELECT customer_id FROM order_by_last2 ORDER BY last_two_chars;

সংখ্যা হিসেবে সর্ট করলে (নাম্বারিক সর্ট)

ORDER BY CAST(RIGHT(customer_id, 2) AS UNSIGNED)

স্ট্রিং সর্টে '100' < '20' হয়, কিন্তু নাম্বারিক সর্টে 20 < 100।

  1. MySQL-এ আইটেমের অর্ডার পরিবর্তন করা

  2. MySQL-এ গ্রুপ করা ফিল্ডের মাধ্যমে ORDER BY করার পদ্ধতি

  3. MySQL কোয়েরি দিয়ে নির্দিষ্ট শেষ স্ট্রিং অক্ষর অনুযায়ী সাজানো

  4. MySQL-এ REPLACE() ফাংশন দিয়ে ক্যারেক্টার রিপ্লেস করা