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

पंक्तियों में विभाजित स्ट्रिंग Oracle SQL

यह चाल चलनी चाहिए:

SELECT DISTINCT ID, regexp_substr("Strings", '[^ ]+', 1, LEVEL)
FROM T
CONNECT BY regexp_substr("Strings", '[^ ]+', 1, LEVEL) IS NOT NULL
ORDER BY ID;

ध्यान दें कि मैंने regexp_substr का उपयोग कैसे किया? क्लॉज द्वारा कनेक्ट में भी। यह एकाधिक रिक्त स्थान के मामले से निपटने के लिए है।

यदि आपके पास प्रति पंक्ति मदों की संख्या पर एक अनुमानित ऊपरी सीमा है, तो यह एक साधारण CROSS JOIN के साथ उपरोक्त पुनरावर्ती क्वेरी के प्रदर्शन की तुलना करने लायक हो सकता है :

WITH N as (SELECT LEVEL POS FROM DUAL CONNECT BY LEVEL < 10)
--                                                       ^^
--                                                 up to 10 substrings
SELECT ID, regexp_substr("Strings", '[^ ]+', 1, POS)
FROM T CROSS JOIN N
WHERE regexp_substr("Strings", '[^ ]+', 1, POS) IS NOT NULL
ORDER BY ID;

लाइव डेमो के लिए http://sqlfiddle.com/#!4/444e3/1 देखें



  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 डेटाबेस में Undo और Redo क्या है?

  2. प्राथमिक सूचकांक और द्वितीयक सूचकांक में वास्तव में क्या अंतर है?

  3. Oracle में गतिरोध

  4. रूबी-ओसी 8 कैसे स्थापित करें?

  5. Oracle से PostgreSQL में माइग्रेट करने के शीर्ष दस कारण