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

MySQL में अल्फ़ान्यूमेरिक कॉलम को कैसे ऑर्डर करें? संख्यात्मक भाग के अनुसार सॉर्टिंग

"100X", "2Z" जैसे मानों वाले अल्फ़ान्यूमेरिक कॉलम को ऑर्डर करने के लिए ORDER BY का उपयोग करें।

टेबल बनाएं

mysql> create table DemoTable (
    -> StudentId VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.52 sec)

रिकॉर्ड्स डालें

mysql> insert into DemoTable values('2X');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('100Y');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('100X');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2Z');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('2Y');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('100Z');
Query OK, 1 row affected (0.17 sec)

सभी रिकॉर्ड्स देखें

mysql> select * from DemoTable;
+-----------+
| StudentId |
+-----------+
| 2X        |
| 100Y      |
| 100X      |
| 2Z        |
| 2Y        |
| 100Z      |
+-----------+
6 rows in set (0.00 sec)

अल्फ़ान्यूमेरिक कॉलम को MySQL में ऑर्डर करने का क्वेरी

mysql> SELECT * FROM DemoTable ORDER BY (StudentId+0), RIGHT(StudentId, 1);

आउटपुट:

+-----------+
| StudentId |
+-----------+
| 2X        |
| 2Y        |
| 2Z        |
| 100X      |
| 100Y      |
| 100Z      |
+-----------+
6 rows in set, 6 warnings (0.00 sec)

व्याख्या:

  • (StudentId+0) - स्ट्रिंग को संख्या में बदलता है (अग्रणी अंक पढ़ता है, गैर-अंक पर रुकता है)
  • '2X' → 2, '100X' → 100
  • RIGHT(StudentId, 1) - अंतिम वर्ण (सफ़िक्स) द्वितीयक सॉर्ट के लिए
  • पहले संख्यात्मक भाग से, फिर सफ़िक्स से सॉर्ट
  • चेतावनी: गैर-संख्यात्मक स्ट्रिंग्स के लिए 0 हो जाता है

बेहतर दृष्टिकोण (MySQL 8.0+): ORDER BY CAST(StudentId AS UNSIGNED), StudentId या REGEXP से संख्यात्मक भाग निकालें।

  1. - MySQL में अलग-अलग लंबाई के अल्फ़ान्यूमेरिक कॉलम को कैसे सॉर्ट करें

    SUBSTRING_INDEX और संख्यात्मक कास्टिंग के साथ अल्फ़ान्यूमेरिक सॉर्टिंग पहले टेबल बनाएं: create table DemoTable1623 ( StudentCode varchar(20) ); Query OK, 0 rows affected (0.47 sec) रिकॉर्ड डालें: insert into DemoTable1623 values(STU-MIT-148); Query OK, 1 row affected (0.22 sec) सभी रिकॉर्ड देखें:

  1. - MySQL में SUBSTRING_INDEX() का उपयोग करके कॉलम कैसे विभाजित करें?

    MySQL में SUBSTRING_INDEX() और LOCATE() फ़ंक्शन का उपयोग करके डिलिमिटर (जैसे अंडरस्कोर) के आधार पर कॉलम को भागों में विभाजित किया जा सकता है। सिंटैक्स 0: बाएं से count भाग -- count < 0: दाएं से |count| भाग उदाहरण: पहला भाग प्राप्त करें (पहले _ से पहले) mysql> CREATE TABLE DemoTable (Name VARCH

  1. - MySQL सीक्वेंस कैसे बनाएं?

    MySQL में सीक्वेंस क्या है? MySQL में, एक सीक्वेंस इंटीजर्स की एक सूची को संदर्भित करता है जो आरोही क्रम में 1 से शुरू होकर या 0 से यदि निर्दिष्ट किया गया हो, उत्पन्न होती है। कई एप्लिकेशन को सीक्वेंस की आवश्यकता होती है जिनका उपयोग विशेष रूप से पहचान के लिए अद्वितीय संख्या उत्पन्न करने के लिए किया