ORDER BY LIKE पैटर्न के साथ सशर्त सॉर्टिंग
वर्णानुक्रम क्रम में होने के बावजूद, किसी विशिष्ट पैटर्न (जैसे 'J' से शुरू) वाले मानों को अंत में रखने के लिए ORDER BY column LIKE 'pattern', column का उपयोग करें।
टेबल और डेटा
mysql> CREATE TABLE DemoTable (
Name VARCHAR(100)
);
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO DemoTable VALUES('John');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('Adam');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('Jace');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('David');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('Sam');
Query OK, 1 row affected (0.20 sec)
सभी रिकॉर्ड
mysql> SELECT * FROM DemoTable;
+-------+ | Name | +-------+ | John | | Adam | | Chris | | Jace | | David | | Sam | +-------+ 6 rows in set (0.00 sec)
'J' से शुरू होने वाले नामों को अंत में रखना
mysql> SELECT * FROM DemoTable ORDER BY Name LIKE 'J%', Name;
परिणाम:
+-------+ | Name | +-------+ | Adam | | Chris | | David | | Sam | | Jace | | John | +-------+ 6 rows in set (0.00 sec)
तर्क: Name LIKE 'J%' 'J' से शुरू होने वालों के लिए TRUE (1), अन्य के लिए FALSE (0) देता है। ORDER BY 0 पहले, फिर 1 क्रमबद्ध करता है। द्वितीयक क्रम Name (वर्णानुक्रम) है।
नोट: पैटर्न '%J%' (कहीं भी J) के बजाय 'J%' (शुरुआत में J) अधिक सटीक है। मूल लेख में '%J%' था जो 'Jace' और 'John' दोनों से मेल खाता, लेकिन 'Major' जैसे नाम भी मेल खाते।