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

Oracle में सीमांकक द्वारा पूछे गए डेटा को कैसे विभाजित करें?

आप इसे एक पुनरावर्ती उप-क्वेरी फैक्टरिंग क्लॉज और सरल स्ट्रिंग फ़ंक्शंस (धीमी नियमित अभिव्यक्तियों के बजाय) का उपयोग करके कर सकते हैं।

(नोट:इसमें पदानुक्रमित प्रश्न भी नहीं होते हैं जब इसकी कई इनपुट पंक्तियाँ होती हैं जो प्रत्येक गहराई पर घातीय रूप से अधिक आउटपुट पंक्तियाँ उत्पन्न करती हैं क्योंकि यह प्रत्येक पंक्ति को अपने माता-पिता के साथ सहसंबंधित नहीं कर सकती है, इसलिए यह इसे सभी पंक्तियों के साथ सहसंबद्ध करेगी पूर्व पदानुक्रम स्तर।)

Oracle सेटअप :

CREATE TABLE some_table( some_id, value ) AS
  SELECT 8, 'A1,A2,A3;A4,A5,A6' FROM DUAL UNION ALL
  SELECT 8, 'B1,B2,B3;B4,B5,B6' FROM DUAL UNION ALL
  SELECT 8, 'C1,C2,C3;C4,C5,C6' FROM DUAL;

क्वेरी :

WITH line_start_end ( some_id, value, startidx, endidx ) AS (
  SELECT some_id,
         value,
         1,
         INSTR( value, ';', 1 )
  FROM   some_table
  WHERE  some_id = 8
UNION ALL
  SELECT some_id,
         value,
         endidx + 1,
         INSTR( value, ';', endidx + 1 )
  FROM   line_start_end
  WHERE  endidx > 0
)
SELECT some_id,
       CASE
       WHEN endidx = 0
       THEN SUBSTR( value, startidx )
       ELSE SUBSTR( value, startidx, endidx - startidx )
       END AS value
FROM   line_start_end;

आउटपुट :

db<>fiddle यहां



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में विशेषाधिकार निरस्त करें

  2. एसक्यूएल नियमित अभिव्यक्ति एक कॉलम (स्ट्रिंग) को डिलीमीटर '/ एन' के आधार पर एकाधिक पंक्तियों में विभाजित करने के लिए

  3. SQL डेवलपर के कॉलम मानों में छिपे हुए दोहरे उद्धरण चिह्नों को कैसे हटाएं

  4. Oracle का उपयोग करके ट्रिगर बनाने में समस्या

  5. cx_Oracle विंडोज प्रमाणीकरण के साथ