SUBSTRING_INDEX और संख्यात्मक कास्टिंग के साथ अल्फ़ान्यूमेरिक सॉर्टिंग
पहले टेबल बनाएं:
mysql> create table DemoTable1623 ( StudentCode varchar(20) ); Query OK, 0 rows affected (0.47 sec)
रिकॉर्ड डालें:
mysql> insert into DemoTable1623 values('STU-MIT-143'); Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1623 values('STU-MIT-10'); Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1623 values('STU-MIT-150'); Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable1623 values('STU-MIT-148'); Query OK, 1 row affected (0.22 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1623;
आउटपुट:
+-------------+ | StudentCode | +-------------+ | STU-MIT-143 | | STU-MIT-10 | | STU-MIT-150 | | STU-MIT-148 | +-------------+ 4 rows in set (0.00 sec)
अलग-अलग लंबाई के अल्फ़ान्यूमेरिक कॉलम को सॉर्ट करने की क्वेरी:
mysql> select * from DemoTable1623 order by substring_index(StudentCode, '-', 1), substring_index(StudentCode, '-', -1) + 0;
परिणाम:
+-------------+ | StudentCode | +-------------+ | STU-MIT-10 | | STU-MIT-143 | | STU-MIT-148 | | STU-MIT-150 | +-------------+ 4 rows in set (0.00 sec)
व्याख्या: SUBSTRING_INDEX(StudentCode, '-', 1) पहला भाग ("STU") निकालता है। SUBSTRING_INDEX(StudentCode, '-', -1) अंतिम भाग (संख्या) निकालता है। "+ 0" स्ट्रिंग को संख्या में बदल देता है ताकि संख्यात्मक क्रम (10, 143, 148, 150) में सॉर्ट हो, न कि लेक्सिकोग्राफिक (10, 143, 148, 150 के बजाय 10, 143, 148, 150) में।