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

MySQL में CASE WHEN और SUBSTRING का उपयोग करके विशिष्ट स्ट्रिंग के आधार पर क्रमबद्ध करना

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) का उपयोग करके।

  1. - MySQL में आइटम का क्रम कैसे बदलें

    MySQL में आइटम का क्रम बदलने के लिए, ORDER BY एलियास नाम का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable653 (Product1Amount int,Product2Amount int); Query OK, 0 rows affected (0.42 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable653

  1. - MySQL में ORDER BY INSTR() से विशिष्ट शब्द क्रमबद्ध करना

    INSTR() फंक्शन के साथ कस्टम ऑर्डरिंग INSTR(str, substr) फंक्शन str में substr की पहली घटना की स्थिति (1-आधारित) लौटाता है। मिलने पर स्थिति, न मिलने पर 0। ORDER BY INSTR(...) से शब्द की स्थिति के अनुसार क्रमबद्ध करें। उदाहरण: टेबल बनाना और डेटा इन्सर्ट करना mysql> CREATE TABLE DemoTable822(Word T

  1. - MySQL में ORDER BY CASE और IN() का उपयोग करके ग्रुप्ड फील्ड्स को कैसे ऑर्डर करें

    CASE WHEN ... IN() के साथ कस्टम ऑर्डरिंग ग्रुप्ड फील्ड्स को कस्टम ऑर्डर में सॉर्ट करने के लिए ORDER BY CASE के साथ IN() का उपयोग करें। CASE विभिन्न शर्तों का मूल्यांकन करता है जबकि ORDER BY मानों को आरोही/अवरोही क्रम में सॉर्ट करता है। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable (