SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite में महीने के नाम से ऑर्डर कैसे करें

समस्या:

आप महीने की संख्या के आधार पर पंक्तियों को क्रमबद्ध करना चाहते हैं, महीने के नाम दिए गए हैं (आप चाहते हैं कि जनवरी पहले दिखाया जाए, आखिरी दिसंबर)।

उदाहरण:

birthday तालिका में दो कॉलम होते हैं:नाम और birthday_month . महीने नामों में दिए जाते हैं, संख्या में नहीं।

<थ>जन्मदिन_माह
नाम
रोनन टीशा जनवरी
दिसंबर अप्रैल
एंजी जूलिया अप्रैल
नरेले डिलन अप्रैल
पर्डी केसी जनवरी
डोना नेल शून्य
ब्लेज़ ग्रीम अक्टूबर

आप पंक्तियों को birthday_month . के अनुसार क्रमित करना चाहते हैं ।

समाधान:

SELECT *
FROM birthday
ORDER BY
 (CASE birthday_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END);

परिणाम इस तरह दिखता है (पंक्तियों को birthday_month . द्वारा आरोही क्रम में क्रमबद्ध किया जाता है ):

<थ>जन्मदिन_माह
नाम
पर्डी केसी जनवरी
एंजी जूलिया अप्रैल
नरेले डिलन अप्रैल
ब्लेज़ ग्रीम अक्टूबर
रोनन टीशा जनवरी
दिसंबर शून्य
डोना नेल शून्य

चर्चा:

पंक्तियों को महीने के अनुसार क्रमबद्ध करने के लिए, आपको महीनों की संख्या (नाम नहीं) की आवश्यकता है। आप CASE WHEN . का उपयोग करके महीने के नामों को संख्यात्मक महीनों में बदल सकते हैं खंड। CASE के बाद कीवर्ड, कॉलम का नाम निर्दिष्ट करें। फिर, प्रत्येक के बाद WHEN , इस कॉलम में मान बताएं, THEN . का उपयोग करें कीवर्ड, और वह नया मान निर्दिष्ट करें जिसे आप पुराने मान के बजाय निर्दिष्ट करना चाहते हैं। यहां, कॉलम birthday_month है , इस कॉलम में वर्तमान मान 'January . हैं ', 'February ',…,'December ', और नए मान संख्यात्मक महीने हैं 1 , 2, ..., 12 . सभी मानों को कनवर्ट करने के बाद, END . का उपयोग करना याद रखें CASE WHEN बंद करने के लिए कीवर्ड खंड। एक नज़र डालें:

CASE birthday_month
  WHEN 'January' THEN 1
  WHEN 'February' THEN 2
  WHEN 'March' THEN 3
  WHEN 'April' THEN 4
  WHEN 'May' THEN 5
  WHEN 'June' THEN 6
  WHEN 'July' THEN 7
  WHEN 'August' THEN 8
  WHEN 'September' THEN 9
  WHEN 'October' THEN 10
  WHEN 'November' THEN 11
  WHEN 'December' THEN 12
END

इस तरह आप एक महीने के नाम को एक महीने की संख्या में बदल देते हैं। आप इसका उपयोग पंक्तियों को महीने के अनुसार बढ़ते क्रम में क्रमबद्ध करने के लिए कर सकते हैं - बस इसे ORDER BY में उपयोग करें खंड।

ध्यान दें कि SQLite में, NULL आरोही क्रम में छँटाई करते समय s पहले प्रदर्शित होते हैं और अवरोही क्रम में छँटाई करते समय अंतिम होते हैं। साथ ही, समान birthday_month . वाली पंक्तियां यादृच्छिक क्रम में प्रदर्शित होते हैं (आप देख सकते हैं Angie Julia दूसरा और Narelle Dillan तीसरा, या Narelle Dillan दूसरा और Angie Julia तीसरा)। क्रम को अवरोही में बदलने के लिए, DESC . का उपयोग करें ORDER BY . में कॉलम के बाद कीवर्ड खंड। यहां बताया गया है कि क्वेरी कैसी दिखनी चाहिए:

SELECT *
FROM birthday
ORDER BY
  (CASE birthday_month
    WHEN 'January' THEN 1
    WHEN 'February' THEN 2
    WHEN 'March' THEN 3
    WHEN 'April' THEN 4
    WHEN 'May' THEN 5
    WHEN 'June' THEN 6
    WHEN 'July' THEN 7
    WHEN 'August' THEN 8
    WHEN 'September' THEN 9
    WHEN 'October' THEN 10
    WHEN 'November' THEN 11
    WHEN 'December' THEN 12
  END) DESC;

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON उप-घटकों को निकालने के लिए ऑपरेटर

  2. डेटाटाइप बेमेल (कोड 20) डालने के दौरान

  3. Android कस्टम कैलेंडर और रिमाइंडर

  4. SQLite समर्थित ContentProvider के आधार पर ListView अपडेट करें

  5. SQLite मैक्स () कैसे काम करता है