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

nth के लिए Coalesce समतुल्य नहीं शून्य मान - MySQL

मुझे यकीन नहीं है कि मैं इस समाधान का उपयोग करने की सिफारिश करूंगा ... आपके डेटा का सामान्यीकरण हमेशा एक बेहतर विकल्प होता है, लेकिन मैं कुछ स्ट्रिंग फ़ंक्शंस के साथ सादे SQL का उपयोग करके उत्तर देना चाहता था। आप जो खोज रहे हैं वह इस क्वेरी को वापस करना चाहिए:

SELECT
  Name,
  Changes,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 1)), ',', 1)) as Change1,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 2)), ',', 1)) as Change2,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 3)), ',', 1)) as Change3,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 4)), ',', 1)) as Change4,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 5)), ',', 1)) as Change5,
  REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(Changes, ',', 6)), ',', 1)) as Change6
FROM (
  SELECT
    Name,
    CONCAT_WS(',', CURRENT, OCT12, SEPT12, AUG12, JUL12, JUN12, MAY12, APR12, ',') as Changes
  FROM
    TableA
) s

मैं सभी मानों को अल्पविराम से अलग स्ट्रिंग में जोड़ रहा हूं, स्ट्रिंग के अंत में दो अल्पविरामों के साथ (एक अल्पविराम वैसे भी पर्याप्त होगा, लेकिन दो डालना आसान है और केवल अंतिम को अनदेखा करें ...), और चूंकि मैं ' m CONCAT_WS का उपयोग करके यह स्वचालित रूप से शून्य मानों को छोड़ देगा, और परिणामी स्ट्रिंग कुछ इस तरह होगी Aug-12,Jun-12,Apr-12,,

फिर बाहरी क्वेरी में मैं SUBSTRIG_INDEX का उपयोग करके स्ट्रिंग के n-वें तत्व को निकाल रहा हूं। मैं आपके डेटाबेस को सामान्य करने की अनुशंसा करता हूं, लेकिन यदि आपको त्वरित सुधार की आवश्यकता है तो यह समाधान एक अच्छा प्रारंभिक बिंदु हो सकता है।

इसे यहां काम करते हुए देखें ।

कृपया ध्यान दें कि मैं NULL मान नहीं लौटा रहा हूँ जहाँ कोई परिवर्तन नहीं है, लेकिन मैं इसके बजाय खाली तार लौटा रहा हूँ। जरूरत पड़ने पर इसे बदला जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. नकली तैयार बयान बनाम वास्तविक तैयार बयान

  2. कैसे बताना है कि कॉलम mysqli का उपयोग कर प्राथमिक कुंजी है या नहीं?

  3. ऑर्डर, ऑर्डर विवरण स्कीमा में ऑर्डर की कुल राशि को कैसे सहेजना है?

  4. 500GB SQL टेबल को Apache Parquet में कैसे बदलें?

  5. मुझे चयन पर लार्वा में डेटाबेस से रिक्त मान मिला है