Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में स्ट्रिंग के निश्चित भाग के आधार पर कैसे क्रमबद्ध करें?

SUBSTRING() के साथ ORDER BY का उपयोग

MySQL में किसी स्ट्रिंग के विशिष्ट भाग के आधार पर परिणाम क्रमबद्ध करने के लिए SUBSTRING() फंक्शन का उपयोग ORDER BY क्लॉज में करें।

सिंटैक्स

SELECT * FROM yourTableName 
ORDER BY SUBSTRING(yourColumnName, startPosition, length) ASC|DESC;

उदाहरण

1. टेबल बनाना

mysql> CREATE TABLE DemoTable (UserId VARCHAR(200));
Query OK, 0 rows affected (0.68 sec)

2. डेटा डालना

mysql> INSERT INTO DemoTable VALUES('USER_1234');
mysql> INSERT INTO DemoTable VALUES('USER_John');
mysql> INSERT INTO DemoTable VALUES('USER_Sam');
mysql> INSERT INTO DemoTable VALUES('USER_Carol');
mysql> INSERT INTO DemoTable VALUES('USER_Bob');

3. सभी रिकॉर्ड्स देखना

mysql> SELECT * FROM DemoTable;
+------------+
| UserId     |
+------------+
| USER_1234  |
| USER_John  |
| USER_Sam   |
| USER_Carol |
| USER_Bob   |
+------------+
5 rows in set (0.00 sec)

केस 1: 4th कैरेक्टर के बाद के भाग के आधार पर आरोही क्रम

mysql> SELECT * FROM DemoTable ORDER BY SUBSTRING(UserId, 5) ASC;
+------------+
| UserId     |
+------------+
| USER_1234  |
| USER_Bob   |
| USER_Carol |
| USER_John  |
| USER_Sam   |
+------------+
5 rows in set (0.00 sec)

केस 2: 4th कैरेक्टर के बाद के भाग के आधार पर अवरोही क्रम

mysql> SELECT * FROM DemoTable ORDER BY SUBSTRING(UserId, 5) DESC;
+------------+
| UserId     |
+------------+
| USER_Sam   |
| USER_John  |
| USER_Carol |
| USER_Bob   |
| USER_1234  |
+------------+
5 rows in set (0.00 sec)

SUBSTRING पैरामीटर समझाए गए

  • SUBSTRING(str, pos) - स्थिति pos से अंत तक (1-आधारित इंडेक्स)
  • SUBSTRING(str, pos, len) - स्थिति pos से len कैरेक्टर
  • SUBSTRING(str FROM pos) - SQL मानक सिंटैक्स
  • SUBSTRING(str FROM pos FOR len) - SQL मानक सिंटैक्स लंबाई के साथ

व्यावहारिक उदाहरण

उत्पाद कोड से संख्यात्मक भाग द्वारा क्रमबद्ध करना

-- PRD-100, PRD-25, PRD-300 जैसे कोड के लिए
SELECT * FROM Products 
ORDER BY CAST(SUBSTRING(ProductCode, 5) AS UNSIGNED);

ईमेल डोमेन द्वारा क्रमबद्ध करना

SELECT * FROM Users 
ORDER BY SUBSTRING_INDEX(Email, '@', -1);

दिनांक स्ट्रिंग (YYYYMMDD) द्वारा क्रमबद्ध करना

SELECT * FROM Logs 
ORDER BY SUBSTRING(LogDate, 1, 4),  -- वर्ष
         SUBSTRING(LogDate, 5, 2),  -- महीना
         SUBSTRING(LogDate, 7, 2);  -- दिन

प्रदर्शन नोट

बड़े टेबल पर SUBSTRING() के साथ ORDER BY इंडेक्स का उपयोग नहीं कर पाता। बेहतर प्रदर्शन के लिए:

  • कंप्यूटेड/जेनरेटेड कॉलम बनाएं और उस पर इंडेक्स डालें
  • या एप्लिकेशन लेवल पर सॉर्टिंग करें
  1. - MySQL में AUTO_INCREMENT कॉलम द्वारा कैसे क्रमबद्ध करें?

    MySQL में AUTO_INCREMENT कॉलम से ORDER BY करना AUTO_INCREMENT प्राथमिक कुंजी कॉलम द्वारा परिणाम क्रमबद्ध करने के लिए सीधे उस कॉलम का उपयोग करें। टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, FirstName VARCHAR(100) ); Query OK, 0 rows

  1. - MySQL में आइटम का क्रम कैसे बदलें

    MySQL में आइटम का क्रम बदलने के लिए, ORDER BY एलियास नाम का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable653 (Product1Amount int,Product2Amount int); Query OK, 0 rows affected (0.42 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable653

  1. - MySQL में ORDER BY CASE और IN() का उपयोग करके ग्रुप्ड फील्ड्स को कैसे ऑर्डर करें

    CASE WHEN ... IN() के साथ कस्टम ऑर्डरिंग ग्रुप्ड फील्ड्स को कस्टम ऑर्डर में सॉर्ट करने के लिए ORDER BY CASE के साथ IN() का उपयोग करें। CASE विभिन्न शर्तों का मूल्यांकन करता है जबकि ORDER BY मानों को आरोही/अवरोही क्रम में सॉर्ट करता है। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable (