स्ट्रिंग के अंतिम N कैरेक्टर के आधार पर सॉर्ट करना
MySQL में RIGHT(str, len) फ़ंक्शन स्ट्रिंग के दाएं से len कैरेक्टर निकालता है। इसका उपयोग ORDER BY में करके अंतिम कैरेक्टर्स द्वारा सॉर्ट कर सकते हैं।
सिंटैक्स
SELECT yourColumnName FROM yourTableName ORDER BY RIGHT(yourColumnName, 2);
उदाहरण: CustomerId जैसे 'John-98', 'Carol-91'
CREATE TABLE OrderByLast2CharactersDemo (
CustomerId VARCHAR(20),
CustomerName VARCHAR(20)
);
INSERT INTO OrderByLast2CharactersDemo VALUES
('John-98', 'John'), ('Carol-91', 'Carol'), ('Bob-99', 'Bob'), ('David-67', 'David');
केस 1: आरोही क्रम (ASC - डिफ़ॉल्ट)
SELECT CustomerId FROM OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2);
+------------+ | CustomerId | +------------+ | David-67 | | Carol-91 | | John-98 | | Bob-99 | +------------+
केस 2: अवरोही क्रम (DESC)
SELECT CustomerId FROM OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2) DESC;
+------------+ | CustomerId | +------------+ | Bob-99 | | John-98 | | Carol-91 | | David-67 | +------------+
व्यावहारिक उपयोग केस
- फ़ाइल नाम:
report_2023.pdf,report_2024.pdf→ वर्ष द्वारा सॉर्ट। - उत्पाद कोड:
PRD-A1,PRD-B2→ अंतिम अंक द्वारा। - फोन नंबर: अंतिम 4 अंकों द्वारा ग्रुपिंग।
प्रदर्शन नोट
RIGHT() फ़ंक्शन इंडेक्स उपयोग को रोकता है (सार्गेबल नहीं)। बड़े टेबल पर:
- एक जनरेटेड कॉलम (MySQL 5.7+) बनाएं:
last2 CHAR(2) GENERATED ALWAYS AS (RIGHT(CustomerId, 2)) STOREDऔर उस पर इंडेक्स बनाएं। - या एप्लिकेशन लेयर पर सॉर्ट करें।