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

SQL स्प्लिट कॉमा सेपरेटेड रो

आप इसे इस तरह शुद्ध SQL के साथ कर सकते हैं

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
  FROM table1 t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')))
 ORDER BY value

नोट: टैली (संख्या) तालिका का लाभ उठाने के लिए चाल है और इस मामले में बहुत आसान है MySQL फ़ंक्शन SUBSTRING_INDEX() . यदि आप इस तरह के बहुत से प्रश्न (विभाजन) करते हैं तो आप इस उदाहरण की तरह एक सबक्वायरी के साथ फ्लाई पर इसे उत्पन्न करने के बजाय एक स्थायी मिलान तालिका को पॉप्युलेट और उपयोग करने पर विचार कर सकते हैं। इस उदाहरण में उपश्रेणी 1 से 100 तक की संख्याओं का एक क्रम प्रभावी ढंग से उत्पन्न करती है जिससे आप स्रोत तालिका में प्रति पंक्ति 100 सीमांकित मानों को विभाजित कर सकते हैं। अगर आपको कम या ज्यादा की जरूरत है तो आप इसे आसानी से समायोजित कर सकते हैं।

आउटपुट:

|          VALUE |
|----------------|
|     somethingA |
|     somethingB |
|     somethingC |
| somethingElseA |
| somethingElseB |

यह रहा SQLFiddle डेमो

स्थायी मिलान तालिका के साथ क्वेरी कुछ इस तरह दिख सकती है

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.values, ',', n.n), ',', -1) value
  FROM table1 t CROSS JOIN tally n
 WHERE n.n <= 1 + (LENGTH(t.values) - LENGTH(REPLACE(t.values, ',', '')))
 ORDER BY value

यह रहा SQLFiddle डेमो




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite और कस्टम ऑर्डर द्वारा

  2. MySQL रोलअप का उपयोग कैसे करें

  3. Ubuntu 20.04 पर MySQL को इंस्टाल करना और कॉन्फ़िगर करना

  4. PHP के साथ MySQL डेटाटाइम से दूसरे प्रारूप में कनवर्ट करें

  5. किसी क्वेरी को छोड़कर उपयोग करते समय त्रुटि