MySQL में CASE WHEN एक्सप्रेशन और SUBSTRING() फ़ंक्शन का उपयोग करके कस्टम क्रम में रिकॉर्ड क्रमबद्ध करें, जहां विशिष्ट उपस्ट्रिंग वाले मान पहले आएं।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> FirstName VARCHAR(100)
-> );
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO DemoTable VALUES
-> ('John'), ('Adam'), ('Sam'), ('Johnny'), ('Joy'), ('Jace');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-----------+ | FirstName | +-----------+ | John | | Adam | | Sam | | Johnny | | Joy | | Jace | +-----------+ 6 rows in set (0.00 sec)
"Jo" से शुरू होने वाले नामों को पहले क्रमबद्ध करना
mysql> SELECT * FROM DemoTable
-> ORDER BY CASE WHEN SUBSTRING(FirstName, 1, 2) = 'Jo' THEN 0 ELSE 1 END;
आउटपुट
+-----------+ | FirstName | +-----------+ | John | | Johnny | | Joy | | Adam | | Sam | | Jace | +-----------+ 6 rows in set (0.00 sec)
व्याख्या:
SUBSTRING(FirstName, 1, 2)- पहले 2 वर्ण निकालता हैCASE WHEN ... = 'Jo' THEN 0 ELSE 1 END- "Jo" से शुरू होने वालों को 0 (पहले), बाकी को 1 (बाद में) असाइन करता है- डिफ़ॉल्ट आरोही क्रम (ASC) में 0 पहले आता है
विस्तार: बहु-स्तरीय कस्टम क्रम
ORDER BY CASE
WHEN SUBSTRING(FirstName, 1, 2) = 'Jo' THEN 1
WHEN SUBSTRING(FirstName, 1, 2) = 'Ja' THEN 2
WHEN SUBSTRING(FirstName, 1, 2) = 'Sa' THEN 3
ELSE 4
END;
MySQL 8.0+ विकल्प: ORDER BY (FirstName LIKE 'Jo%') DESC, (FirstName LIKE 'Ja%') DESC, ... - बूलियन परिणाम (1/0) का उपयोग करके।