RLIKE और IF के साथ कस्टम सॉर्टिंग
अक्षर से शुरू होने वाले मानों को संख्या से शुरू होने वाले मानों से पहले सॉर्ट करने के लिए:
SELECT * FROM yourTableName ORDER BY IF(yourColumnName RLIKE '^[a-z]', 1, 2), yourColumnName;
RLIKE '^[a-z]' जांचता है कि मान छोटे अक्षर से शुरू होता है या नहीं। IF 1 (अक्षर पहले) या 2 (संख्या बाद में) निर्दिष्ट करता है।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE AlphabetFirstThenNumberDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> PRIMARY KEY(Id)
-> );
mysql> INSERT INTO AlphabetFirstThenNumberDemo(Name)
-> VALUES('John'),('Bob'),('1Sam'),('Carol'),('2Larry'),('David'),('3Mike'),('Robert');
कस्टम ऑर्डरिंग क्वेरी
mysql> SELECT * FROM AlphabetFirstThenNumberDemo
-> ORDER BY IF(Name RLIKE '^[a-z]', 1, 2), Name;
आउटपुट:
+----+--------+ | Id | Name | +----+--------+ | 2 | Bob | | 4 | Carol | | 6 | David | | 1 | John | | 8 | Robert | | 3 | 1Sam | | 5 | 2Larry | | 7 | 3Mike | +----+--------+
पहले अक्षर से शुरू (Bob, Carol, David, John, Robert), फिर संख्या से शुरू (1Sam, 2Larry, 3Mike)। प्रत्येक ग्रुप के भीतर वर्णमाला क्रम।