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

कॉलमटेक्स्ट को पंक्तियों में विभाजित करें (कोष्ठक में सीमांकक निकालें) ORACLE SQL

आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं (([^(]*?(\(.*?\))?)*)(,|$) मिलान करने के लिए:

  • [^(]*? शून्य-या-अधिक (लेकिन जितना संभव हो उतना कम) गैर-उद्घाटन-कोष्ठक वर्ण
  • (\(.*?\))? फिर, वैकल्पिक रूप से, एक ओपनिंग ब्रैकेट और क्लोजिंग ब्रैकेट तक जितना संभव हो उतना कम वर्ण।
  • ( )* कैप्चरिंग ग्रुप में लपेटा गया शून्य या अधिक बार दोहराया गया
  • ( ) संपूर्ण मिलान किए गए आइटम को संदर्भित करने में सक्षम होने के लिए एक कैप्चरिंग समूह में लपेटा गया
  • (,|$) इसके बाद कॉमा या एंड-ऑफ़-स्ट्रिंग।

इस तरह:

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

CREATE TABLE table_name ( ID, Kategory ) AS
SELECT 1, 'ATD 5(2830),ATO 4(510),EDI 1,EH A1,SCI 2,SS 1,STO-SE 1(oral, CNS, blood),STO-SE 2(oral, respiratory effects)' FROM DUAL;

क्वेरी 1 :

SELECT ID,
       l.COLUMN_VALUE AS item,
       REGEXP_SUBSTR(
         Kategory,
         '(([^(]*?(\(.*?\))?)*)(,|$)',
         1,
         l.COLUMN_VALUE,
         NULL,
         1
       ) AS value
FROM   table_name t
       CROSS JOIN
       TABLE(
         CAST(
           MULTISET(
             SELECT LEVEL
             FROM   DUAL
             CONNECT BY LEVEL < REGEXP_COUNT( t.Kategory, '(([^(]*?(\(.*?\))?)*)(,|$)' )
           )
           AS SYS.ODCINUMBERLIST
         )
       ) l

परिणाम :

| ID | ITEM |                               VALUE |
|----|------|-------------------------------------|
|  1 |    1 |                         ATD 5(2830) |
|  1 |    2 |                          ATO 4(510) |
|  1 |    3 |                               EDI 1 |
|  1 |    4 |                               EH A1 |
|  1 |    5 |                               SCI 2 |
|  1 |    6 |                                SS 1 |
|  1 |    7 |          STO-SE 1(oral, CNS, blood) |
|  1 |    8 | STO-SE 2(oral, respiratory effects) |



  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. Oracle अशक्त निर्धारित करें ==अशक्त

  3. मैं कैसे पता लगा सकता हूं कि ऑरैकल डेटाबेस ऑटोोकॉमिट पर सेट है या नहीं?

  4. NUMBER_ARRAY के लिए तैयार स्टेटमेंट सेटिंग शून्य काम नहीं करती

  5. एचक्यूएल शून्य है और !=ओरेकल कॉलम पर शून्य है