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

MySQL में कॉमा से अलग संख्याओं को महीना नामों से कैसे बदलें?

MySQL में FIND_IN_SET() और CASE स्टेटमेंट का उपयोग करके कॉमा से अलग महीना संख्याओं को महीना नामों में बदला जा सकता है।

उदाहरण

तालिका बनाएं और डेटा डालें:

mysql> CREATE TABLE DemoTable (Month VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('2,4,6'), ('1,3,5,12'), ('7,8,9,10');

क्वेरी

mysql> SELECT TRIM(TRAILING ',' FROM CONCAT(
    ->     CASE WHEN FIND_IN_SET(1, Month) THEN 'January,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(2, Month) THEN 'February,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(3, Month) THEN 'March,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(4, Month) THEN 'April,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(5, Month) THEN 'May,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(6, Month) THEN 'June,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(7, Month) THEN 'July,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(8, Month) THEN 'August,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(9, Month) THEN 'September,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(10, Month) THEN 'October,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(11, Month) THEN 'November,' ELSE '' END,
    ->     CASE WHEN FIND_IN_SET(12, Month) THEN 'December,' ELSE '' END
    -> )) FROM DemoTable;

परिणाम

+--------------------------------------------------+
| February,April,June                              |
| January,March,May,December                       |
| July,August,September,October                    |
+--------------------------------------------------+

व्याख्या

  • FIND_IN_SET(n, Month) - जांचता है कि संख्या n सूची में है
  • CASE WHEN ... THEN 'Name,' ELSE '' END - मिलने पर नाम जोड़ता है
  • CONCAT() - सभी परिणाम जोड़ता है
  • TRIM(TRAILING ',' ...) - अंतिम कॉमा हटाता है

बेहतर विकल्प (MySQL 8.0+)

JSON_TABLE या रिकर्सिव CTE का उपयोग करके अधिक स्केलेबल समाधान।

चेतावनी

  • हार्डकोडेड CASE स्टेटमेंट - रखरखाव मुश्किल
  • प्रदर्शन: प्रत्येक पंक्ति के लिए 12 FIND_IN_SET कॉल
  • डेटा डिज़ाइन सुधार: अलग तालिका में महीना संख्याएं संग्रहीत करें

सुझाव: एप्लिकेशन लेयर पर यह रूपांतरण करना अधिक कुशल है।

  1. - MySQL में संख्याओं वाले रिकॉर्ड राउंड करें

    संख्या राउंड करने के लिए MySQL ROUND() का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> Amount DECIMAL(10,4) -> ); Query OK, 0 rows affected (1.18 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable values(100.578)

  1. - MySQL में CASE WHEN के साथ काउंट कैसे करें?

    MySQL में शर्ती गिनती (कंडीशनल काउंट) करने के लिए SUM(CASE WHEN ... THEN 1 ELSE 0 END) पैटर्न का उपयोग करें। यह एक ही क्वेरी में एकाधिक शर्तों की गिनती करने का कुशल तरीका है। उदाहरण: विशिष्ट मार्क्स की गिनती प्रति छात्र डेमो टेबल बनाएं: mysql> CREATE TABLE DemoTable1910 ( FirstName VARCHAR

  1. - MySQL में SELECT और SHOW कमांड के परिणामों को कैसे संयोजित करें

    समाधान उपयोगकर्ता-परिभाषित वेरिएबल (@) या सिस्टम वेरिएबल (@@) का उपयोग करके एक ही SELECT में कई मान दिखाएं। उपयोगकर्ता वेरिएबल SELECT @first_name AS EmployeeFirstName, @last_name AS EmployeeLastName; +-------------------+------------------+ | EmployeeFirstName | EmployeeLastName | +---------------